天天看點

Ribbon負載均衡SpringCloud

Rebbon

什麼是rebbon?

是一款基于HTTP和TCP的一款用戶端負載均衡工具,基于Netflix Ribbon實作的.

負載均衡方案

  • 集中式負載均衡比如Ngix 檢討代理,負載均衡,伺服器端對外部的通路請求進行負載均衡
  • 程序内負載均衡 比如ribbon,将内部的服務調用進行負載均衡

負載均衡的政策

  • 輪詢政策 RoundRobinRule 按順序進行服務通路(預設)
  • 權重輪詢政策 WeightedResponseTimeRule 根據每個provider的服務響應時間,響應越快,權重越高,被選中的可能性更高
  • 随機政策 RandomRule 随機選取服務進行通路
  • 最少并發政策 RetryRule BestAvailableRule 優先選取并發量小的服務進行通路
  • 可用性敏感詞政策 AvailabilityFilteringRule 過濾高并發和一直連接配接失敗的服務提供者
  • 區域敏感性政策 ZoneAvoidanceRule 考察一個區域内的服務可用性,對不可用的區域進行丢棄,從剩下的狳中選擇可用的provider

用法

全局: 在啟動類注入對應的負載均衡政策類 如下

@Bean
public RandomRule randomRule() {
    return new RandomRule();
}

           

**局部 **在配置檔案中添加對應服務提供者的策在均衡政策

# 負載均衡政策
# service-provider 為調用的服務的名稱
service-provider:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

           

Ribbon 點對點直連

點對點直連即跳過注冊中心,直接連接配接服務提供者擷取服務,一般在測試階段使用,然後項目上線再注冊到注冊中心

操作方法

consumer 注釋 eureka依賴和配置檔案 (僅注釋配置檔案無效,因為約定大于配置)

引入rebbon依賴,配置檔案關閉eureka,添加直連的服務位址

# 負載均衡政策
# service-provider 為調用的服務的名稱
service-provider:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    # 點對點直連模式,指定具體的 Provider 服務清單,多個用逗号隔開
    listOfServers: http://localhost:7070,http://localhost:7071

# 關閉 Eureka 實作 Ribbon 點對點直連
ribbon:
  eureka:
    enabled: false # false:關閉,true:開啟