javascript
Spring Cloud【Finchley】-05使用配置文件自定义Ribbon Client
文章目錄
- 概述
- 示例
- 新建子模塊
- 子模塊加入依賴
- 配置文件增加配置
- 驗證
- 源碼
概述
Finchley.SR2版本的官方文檔:
https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spring-cloud.html#spring-cloud-ribbon
示例
新建子模塊
父模塊microservice-spring-cloud,右鍵新建Maven Module : micorservice-consumer-movie-ribbon-customrule-properties
查看父模塊的pom.xml
子模塊工程結構
子模塊加入依賴
micorservice-consumer-movie-ribbon-customrule-properties子模塊的pom.xml加入spring-cloud-starter-netflix-eureka-client依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>配置文件增加配置
根據官網的指導可知,如果我們希望在該微服務中設置請求某個服務的規則,配置
application.yml中增加如下配置
#使用屬性自定義Ribbon配置 MICROSERVICE-PROVIDER-USER: ribbon: NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerListNFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule這里我們使用隨機的方式,所以設置了 RandomRule 。
驗證
Step1:啟動Eureka Server微服務
Step2: 啟動兩個Provider微服務
Step3:啟動該微服務作為消費者,通過Eureka Server上的地址去調用注冊在Eureka上的兩個provider微服務,觀察負載均衡策略
經過測試,如果設置了NIWSServerListClassName,那么調用的服務端的微服務的名字必須大寫,否則會找不到微服務。 No instances available for microservice-provider-user。 不過看官網的例子服務名也是小寫的,這里還不是很清楚,請大家慎重看待我這里的結論,不一定正確,歡迎指正
這樣設置,測試了下結果還是像輪詢的方式,先把 NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList配置項去掉,重新驗證下
在去掉NIWSServerListClassName的前提下
- 如果服務名還是大寫的話,看測試結果 還是輪詢的。
- 如果把服務名改成小寫,測試結果
看結果,是隨機分發的策略。
目前還搞不懂Spring Cloud 和Ribbon 是如何協調工作的,先記錄下結果,后續再研究。 如果有不對的地方,請指正,謝謝。
Spring Boot和Spring Cloud 的版本信息
源碼
https://github.com/yangshangwei/SpringCloudMaster
總結
以上是生活随笔為你收集整理的Spring Cloud【Finchley】-05使用配置文件自定义Ribbon Client的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud【Finchle
- 下一篇: Spring Cloud【Finchle