日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud Alibaba - 07 Ribbon 应用篇及内置的负载均衡算法

發布時間:2025/3/21 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud Alibaba - 07 Ribbon 应用篇及内置的负载均衡算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Ribbon整合三部曲
    • artisan-cloud-ribbon-order
      • step1 搞依賴
      • step2 搞注解 (在RestTemplate上加入@LoadBalanced注解)
      • Step3 搞配置文件
    • artisan-cloud-ribbon-product
    • 驗證
  • 修改Ribbon默認的負載策略
  • Ribbon的內置的負載均衡算法
    • 類關系 (IRule接口 AbstractLoadBalancerRule抽象類)
    • 負載均衡算法
      • RandomRule
      • RetryRule
      • RoundRobinRule
      • AvailabilityFilteringRule
      • BestAvailableRule
      • WeightedResponseTimeRule
      • ZoneAvoidanceRule(默認)
  • 源碼


Ribbon整合三部曲

我們這里通過Ribbon組件來實習負載均衡 【默認的負載均衡算法是 輪詢】

artisan-cloud-ribbon-order

step1 搞依賴

<!--nacos-client--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId></dependency><!--加入ribbon--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency>

step2 搞注解 (在RestTemplate上加入@LoadBalanced注解)

@Configuration public class WebConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();} }

Step3 搞配置文件

這里是寫Nacos 的配置文件,暫時沒有配置Ribbon的配置

spring:cloud:nacos:discovery:server-addr: 1.117.97.88:8848application:name: artisan-order-center

artisan-cloud-ribbon-product

作為服務提供方,僅需要注冊到Nacos , 無需集成Ribbon, 啟動多個測試Ribbon的負載策略即可。

@RestController @Slf4j public class ProductInfoController {@Value("${server.port}")private Integer port;@Autowiredprivate ProductInfoMapper productInfoMapper;@RequestMapping("/selectProductInfoById/{productNo}")public Object selectProductInfoById(@PathVariable("productNo") String productNo) {log.info("{} 被請求了",port);ProductInfo productInfo = productInfoMapper.selectProductInfoById(productNo);return productInfo;}}


驗證

分別請求三次

日志如下

可以猜測,默認策略為輪詢算法


修改Ribbon默認的負載策略

請求三次


Ribbon的內置的負載均衡算法

類關系 (IRule接口 AbstractLoadBalancerRule抽象類)


可以看到是采用的策略設計模式,公共的都寫到了抽象類中

負載均衡算法

RandomRule

隨機選擇一個Server


RetryRule

對選定的負載均衡策略機上重試機制,在一個配置時間段內當選擇Server不成功,則一直嘗試使用subRule的方式選擇一個可用的server.


RoundRobinRule

輪詢選擇, 輪詢index,選擇index對應位置的Server


AvailabilityFilteringRule

過濾掉一直連接失敗的被標記為circuit tripped的后端Server,并過濾掉那些高并發的后端Server或者使用一個AvailabilityPredicate來包含過濾server的邏輯,其實就就是檢查status里記錄的各個Server的運行狀態


BestAvailableRule

選擇一個最小的并發請求的Server,逐個考察Server,如果Server被tripped了,則跳過。


WeightedResponseTimeRule

根據響應時間加權,響應時間越長,權重越小,被選中的可能性越低;


ZoneAvoidanceRule(默認)

復合判斷Server所在Zone的性能和Server的可用性選擇Server,在沒有Zone的情況下類是輪詢。


源碼

https://github.com/yangshangwei/SpringCloudAlibabMaster

總結

以上是生活随笔為你收集整理的Spring Cloud Alibaba - 07 Ribbon 应用篇及内置的负载均衡算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。