從 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);
}
}