liubao68 commented on issue #4027: URL: https://github.com/apache/servicecomb-java-chassis/issues/4027#issuecomment-1807673289
2.8.x会一直保留这个功能,不会删除。 在3.x.x版本会删除这个功能。 具体有如下原因: 1. 这个功能解决的场景如下:当环境中同时存在两个微服务A,B,其中A调用B,并且他们都有2个版本, A1,A2, B1, B2。 如果B2比B1对了一个接口x,A2访问x, A1不访问x。 该功能会保证A2访问x的时候,请求转发到B2, 不会转发到B1。 这个功能是java chassis的独特功能,业界一般的通用实践是使用灰度发布。 2. 这个功能会增加开发框架和注册中心的耦合。注册中心必须支持微服务版本管理和契约管理,并且需要约束契约变化的时候,必须修改版本号。除了servicecomb-service-center,目前其他的开源产品,比如Nacos、Consul钧不支持这个功能。 而Java Chassis未来会开放性支持其他开源产品。 这个是未来会移除这个功能的主要原因。 3. 这个功能也存在一些问题和不足,在3.x.x会变得更好。 3.x.x只保留最新版本的契约,内存存储空间更小,处理契约变更的场景更少,程序会运行的更加稳定,减少毛刺;当服务端存在接口变化,比如将POST修改为GET的时候(A使用RPC访问,接口参数名称和方法名没变化),3.x.xA不用升级,就能够正常访问B,而2.8.x会返回404. 总结下,这个问题是充分权衡了各种设计要素后的结果。 无法同时满足上述的各种要求。在新版本会考虑移除这个功能。 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
