springcloud 2020.0.x版本移除ribbon后如何修改負載均衡策略


  從 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提供的七中方案。

image-20210604202556451

  

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM