Spring Cloud教程 | 第六篇:負載均衡策略配置及總結 | Feign | Ribbon

Spring Cloud教程 | 第六篇:負載均衡策略配置及總結 | Feign | Ribbon

一、前言

第五篇中已介紹,feign其實不是做負載均衡的,負載均衡是ribbon的功能,feign只是集成了ribbon而已,換句話說負載均衡的功能是feign內置的ribbon在實現的。因此配置負載均衡策略即爲對ribbon進行配置。

目前公司的生產系統負載均衡、高可用等均使用集羣管理平臺Kubernetes(K8S)實現。本部門人員此部分了解即可,不指導生產使用

 
Spring Cloud版本     Spring Boot版本     JAVA     IDE
Greenwich.SR1     2.1.6.RELEASE     1.8     IDEA

爲模擬實際開發,本篇教程除alh-tms外,所有的參數均從遠程配置中心讀取,若是不用遠程配置中心,請在本地應用直接寫各項參數即可。

涉及項目:

alh-config-server(6001): 保持啓動狀態

alh-eureka-server(6000):保持啓動狀態

alh-tms(8001):保持上一篇中兩個實例啓動狀態

alh-order(8002)

完整教程全部章節目錄:https://blog.csdn.net/tuoyun6647/article/details/93501029
二、Feign中Ribbon配置

Ribbon負載均衡策略有以下幾種:

策略類 名稱 說明
RandomRule 隨機策略 隨機選擇 Server
RoundRobinRule 輪訓策略 按順序循環選擇 Server
RetryRule 重試策略 在一個配置時問段內當選擇 Server 不成功,則一直嘗試選擇一個可用的 Server
BestAvailableRule 最低併發策略 逐個考察 Server,如果 Server 斷路器打開,則忽略,再選擇其中併發連接最低的 Server
AvailabilityFilteringRule 可用過濾策略 過濾掉一直連接失敗並被標記爲 circuit tripped 的 Server,過濾掉那些高併發連接的 Server(active connections 超過配置的網值)
ResponseTimeWeightedRule 響應時間加權策略 根據 Server 的響應時間分配權重。響應時間越長,權重越低,被選擇到的概率就越低;響應時間越短,權重越高,被選擇到的概率就越高。這個策略很貼切,綜合了各種因素,如:網絡、磁盤、IO等,這些因素直接影響着響應時間
ZoneAvoidanceRule 區域權衡策略 綜合判斷 Server 所在區域的性能和 Server 的可用性輪詢選擇 Server,並且判定一個 AWS Zone 的運行性能是否可用,剔除不可用的 Zone 中的所有 Server

調用者(即服務消費者)alh-order配置文件application.properties如下

    eureka.client.service-url.defaultZone=${default-zone}
     
    server.port=${server.port}
    spring.application.name=alh-order


    #其中“alh-tms”指明對哪個微服務的調用進行配置,當前配置使用隨機策略,修改策略修改最後的類名即可
 

    alh-tms.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
     
    # 設置連接超時時間,單位ms
    ribbon.ConnectTimeout=5000
    # 設置讀取超時時間,單位ms
    ribbon.ReadTimeout=5000
    # 對所有操作請求都進行重試
    ribbon.OkToRetryOnAllOperations=true
    # 切換實例的重試次數
    ribbon.MaxAutoRetriesNextServer=2
    # 對當前實例的重試次數
    ribbon.MaxAutoRetries=1

啓動後調用上一篇中的http://localhost:8002/tms/csinfo,發現調用alh-tms已變成隨機調用
三、總結

個人在實現時,發現負載均衡策略配置需指定調用的服務,如果一個服務中需要調用很多其他服務,則每個服務都需要進行配置,配置較繁瑣,且不方便統一管理(如有不對的地方請指正)。就生產而言,部署建議使用集羣管理平臺進行部署,高可用,負載均衡等均在集羣管理平臺統一配置

原文鏈接:https://blog.csdn.net/tuoyun6647/article/details/93667643

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章