从 Spring Cloud 2020.0.0-M1 开始,Spring Cloud 废除了这种英国伦敦地铁站的命名方式,而使用了全新的 "日历化" 版本命名方式。
早在 2018 年,Spring Cloud 在其 Roadmap 里就宣布将要终结的一些库/版本,其中最重要的就是指 Spring Cloud Netflix 项目进入维护模式,然后计划在 2020 年完全移除。
Spring Cloud 做出这样的决定其实也是不见得是主动的。我们知道 Spring Cloud 一直以来把 Netflix OSS
套件作为其官方默认的一站式解决方案,那时的 Netflix OSS 套件恨不得可以跟 Spring Cloud 划等号。而 Netflix 公司在 2018 年前后宣布其核心组件 Hystrix、Ribbon、Zuul、Archaius 等均进入维护状态。
时至今日,Spring Cloud 2020.0 正式发布,在这个主要版本里,按既定计划终于对 spring-cloud-netflix
动刀了。
对于Netflix,只保留了其eureka,其他组件全部移除,并给出了推荐替代品。
Netflix |
推荐替代品 |
说明 |
---|---|---|
Hystrix |
Resilience4j |
Hystrix自己也推荐你使用它代替自己 |
Hystrix Dashboard / Turbine |
Micrometer + Monitoring System |
说白了,监控这件事交给更专业的组件去做 |
Ribbon |
Spring Cloud Loadbalancer |
忍不住了,Spring终究亲自出手 |
Zuul 1 |
Spring Cloud Gateway |
忍不住了,Spring终究亲自出手 |
Archaius 1 |
Spring Boot外部化配置 + Spring Cloud配置 |
比Netflix实现的更好、更强大 |
对于初学者,对负载均衡的策略主要是依赖与ribbon提供的七中方案。
SC推荐的loadbalance替换ribbon:
首先创建配置类(默认的@LoadBalanced为轮询,下面修改为随机):
@Configuration
public class MyConfig {
@Bean
public ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
LoadBalancerClientFactory loadBalancerClientFactory){
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new RandomLoadBalancer(loadBalancerClientFactory
.getLazyProvider(name, ServiceInstanceListSupplier.class),
name);
}
}
启动类上加上LoadBalancerClients 后面为自己的配置类:
@SpringBootApplication
@EnableEurekaClient
@LoadBalancerClients(defaultConfiguration = {MyConfig.class})
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}