SpringCloud 2020:
SpringCloud 2020版本问题 :
在spring-cloud-starter-netflix-eureka-client3.0.0 版本及以上遇到使用ribbon无法获取到服务中心的数据
问题描述:
发现在使用spring-cloud-starter-netflix-eureka-client3.0.0以下版本,例如2.2.9.RELEASE中管理着Netflix所有组件,包括Hystrix、Ribbon、Zuul、Eureka等。而自2020.0版本起,它有且只管理Eureka(包括Server和Client)
但是如果使用最新版本的Spring Cloud又想要用Netflix,手动添加低版本的ribbon可以吗
答案是不行的,实测添加了spring-cloud-netflix-ribbon:2.2.9.RELEASE依赖之后,也无法获取到服务中心的数据。可能是不能向下兼容吧,具体原因还没了解。
Netflix组件替代方案
Spring Cloud团队将Netflix OSS套件去掉之后,给我们推荐了用于替代的产品:
Netflix | 推荐替代品 |
---|---|
Hystrix | Resilience4j |
Hystrix Dashboard / Turbine | Micrometer + Monitoring System |
Ribbon | Spring Cloud Loadbalancer |
Zuul 1 | Spring Cloud Gateway |
Archaius 1 | Spring Boot外部化配置 + Spring Cloud配置 |
参考于Spring Cloud 2020.0.0,再见Netflix
在Spring Cloud 2020 中,有轮询、随机两种负载均衡策略,默认轮询策略。
要是想使用随机策略,可以通过 @LoadBalancerClient 注解,指定负载均衡策略
@Configuration
@LoadBalancerClient(value = "server-provider", configuration = RandomLoadbalancerConfig.class)
public class RandomLoadbalancerConfig {
@Bean
public ReactorLoadBalancer<ServiceInstance> reactorServiceInstanceLoadBalancer(Environment environment,
LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new RandomLoadBalancer(
loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
}
}
参考于 SpringCloud LoadBalancer灰度策略实现