Closed XuDaojie closed 2 years ago
ServiceInstanceSupplier is Deprecated, please use the ServiceInstanceListSupplier replace it.
com.alibaba.cloud.nacos.ribbon.ExtendBalancer
Is ExtendBalancer banded with Ribbon?
ServiceInstanceSupplier is Deprecated, please use the ServiceInstanceListSupplier replace it.
这个我也注意到了,我发现RoundRobinLoadBalancer中同时使用了ServiceInstanceListSupplier
和ServiceInstanceSupplier
,并且优先使用ServiceInstanceListSupplier
,根据注释似乎是期望ServiceInstanceSupplier.java
被移除后再将serviceInstanceSupplier
属性移除,我预计可能是为了保证兼容性,所以也做了保留。
目前最新spring cloud commons 3.x 已经删除了ServiceInstanceSupplier.java
,但2.2.x最新版中依然保留了ServiceInstanceSupplier.java
2021.x版用新的,2.2.x如果没有新的,就仍旧用旧的,@theonefx,H版同时包含两种Loadbalancer,是否要merge到2.2.x?
com.alibaba.cloud.nacos.ribbon.ExtendBalancer
Is ExtendBalancer banded with Ribbon?
这个类不依赖ribbon,我更新了文档,在pom中排除了spring-cloud-starter-netflix-ribbon依然可用,可以将nacos-discovery-consumer-sclb-example中ConsumerSCLBApplication的第82行替换成configuration = NacosLoadBalancerClientConfiguration.class
进行测试
我建议ExtendBalancer应该移动位置,否则给使用者一种错觉:ExtendBalancer放在ribbon的包下,是ribbon独有的。可以考虑如下的包名
com.alibaba.cloud.nacos.balancer
有四个事项
@ConditionalOnClass
注解根据哪种负载均衡包来开启哪种负载均衡下的权重路由Zone
,即会不会加上权重路由把区域亲和性冲掉了有四个事项
- 权重路由,在SCA 202x版也是缺失的,不仅仅是SCA 2.2.x,所有应该需要在两个版本添加
- 为保持统一用户,Spring Cloud LoadBalancer应该跟Ribbon最好保持一致,例如,加上开关控制,也需要通过
@ConditionalOnClass
注解根据哪种负载均衡包来开启哪种负载均衡下的权重路由- PR里的代码是否借鉴Spring Cloud LoadBalancer的源码,是否考虑过兼容源码里的一些其它特性,例如:区域亲和性
Zone
,即会不会加上权重路由把区域亲和性冲掉了- 在Spring Cloud H版和2020版的Spring Cloud LoadBalancer实现方式有所差异,如果merge到SCA 202x,需要做充分的兼容性测试
谢谢指导 但还有俩问题
有四个事项
- 权重路由,在SCA 202x版也是缺失的,不仅仅是SCA 2.2.x,所有应该需要在两个版本添加
- 为保持统一用户,Spring Cloud LoadBalancer应该跟Ribbon最好保持一致,例如,加上开关控制,也需要通过
@ConditionalOnClass
注解根据哪种负载均衡包来开启哪种负载均衡下的权重路由- PR里的代码是否借鉴Spring Cloud LoadBalancer的源码,是否考虑过兼容源码里的一些其它特性,例如:区域亲和性
Zone
,即会不会加上权重路由把区域亲和性冲掉了- 在Spring Cloud H版和2020版的Spring Cloud LoadBalancer实现方式有所差异,如果merge到SCA 202x,需要做充分的兼容性测试
谢谢指导 但还有俩问题
- SCA 202x也要添加此功能应该还要再提交一个新的pr吧?而不是在当前pr里同时兼容吧?Spring Cloud LoadBalancer 2020版和H版比移除了不少类。
- 如果是创建新的pr,是不是指当前2.2.x的分支和2020是完全平行的了,SCA最新的master代码不会被合并到2020里?
会合并过去,然后再做兼容性调整。除非是只属于202x的特性直接提交到2020分支,否则暂时还是优先在master分支做处理
有四个事项
- 权重路由,在SCA 202x版也是缺失的,不仅仅是SCA 2.2.x,所有应该需要在两个版本添加
- 为保持统一用户,Spring Cloud LoadBalancer应该跟Ribbon最好保持一致,例如,加上开关控制,也需要通过
@ConditionalOnClass
注解根据哪种负载均衡包来开启哪种负载均衡下的权重路由- PR里的代码是否借鉴Spring Cloud LoadBalancer的源码,是否考虑过兼容源码里的一些其它特性,例如:区域亲和性
Zone
,即会不会加上权重路由把区域亲和性冲掉了- 在Spring Cloud H版和2020版的Spring Cloud LoadBalancer实现方式有所差异,如果merge到SCA 202x,需要做充分的兼容性测试
谢谢指导 但还有俩问题
- SCA 202x也要添加此功能应该还要再提交一个新的pr吧?而不是在当前pr里同时兼容吧?Spring Cloud LoadBalancer 2020版和H版比移除了不少类。
- 如果是创建新的pr,是不是指当前2.2.x的分支和2020是完全平行的了,SCA最新的master代码不会被合并到2020里?
会合并过去,然后再做兼容性调整。除非是只属于202x的特性直接提交到2020分支,否则暂时还是优先在master分支做处理
已重新提交代码
ReactorServiceInstanceLoadBalancer
接口,此接口中choose方法参数和响应中依赖的类,在Spring Cloud Commons 3.0.x中已移除loadbalancer.nacos.enbaled=true
时会全局生效
但这块感觉和ribbon不完全一致
ribbon的ribbon.nacos.enabled=true
只是控制是否自动创建ServerList
\ NacosServerIntrospector
(如需路由规则生效还要添加ribbon的配置,并只针对指定的服务生效)
这俩类一个用于处理获取可用的服务列表,一个处理是否以https形式调用服务,但这两个功能在sclb中使用NacosDiscoveryClient
已经处理好了,所以我觉得可能不加开关配置更接近ribbon目前的使用方式,或者换成loadbalancer.nacos.default.enbaled
会不会更好?loadbalancer.nacos.enbaled=true,enabled是不是拼写错了?
loadbalancer.nacos.enbaled=true,enabled是不是拼写错了?
代码里用的这个loadbalancer.nacos.enabled
其实,个人倾向这个PR直接去2021版本,H版使用Reactor负载均衡很少吧?
其实,个人倾向这个PR直接去2021版本,H版使用Reactor负载均衡很少吧?
0.0 那现在这个都已经整好了啊
我看了下如果要实现2021版把当前已移除的类换成同名的新类差不多就行了
那如果要实现2021版的话我可以自己从2020.0.0里切个分支出来再把当前分支合并进去改吗?或者你们合并的时候再改下?
如果要Merge,估计要到下个版本了,这个版本目前都测试完毕。需要@theonefx 来定夺
我也是建议这个pr不需要兼容两个分支,直接提交到2021.x分支,2021.x以下的版本,默认使用ribbon就好。ServiceInstanceSupplier
在新版本的Spring Cloud Loadbalancer中已经被移除了,避免兼容问题。
其实,个人倾向这个PR直接去2021版本,H版使用Reactor负载均衡很少吧?
0.0 那现在这个都已经整好了啊
我看了下如果要实现2021版把当前已移除的类换成同名的新类差不多就行了
那如果要实现2021版的话我可以自己从2020.0.0里切个分支出来再把当前分支合并进去改吗?或者你们合并的时候再改下?
你可以改成向2021.x版commit,这次2021.x不会发版,估计你的PR上改一下版本号即可
我也是建议这个pr不需要兼容两个分支,直接提交到2021.x分支,2021.x以下的版本,默认使用ribbon就好。
ServiceInstanceSupplier
在新版本的Spring Cloud Loadbalancer中已经被移除了,避免兼容问题。
那H版我就只补充下文档吧
可以着手在2021分支上推送你的PR,谢谢
可以着手在2021分支上推送你的PR,谢谢
已经提交了PR了,是使用2020.0.0分支吧
Describe what this PR does / why we need it
Does this pull request fix one issue?
None
Describe how you did it
参考的NacosRule(目前已实现的基于Ribbon的方法)、RoundRobinLoadBalancer(spring cloud loadbalancer 默认的轮询实现)
Describe how to verify it
在nacos-discovery.adoc中添加了使用方法
Special notes for reviews