自定義Ribbon的負載均衡策略

2021-10-07 02:46:38 字數 1750 閱讀 9119

有時候預設的負載策略不能適應業務,這時候可以用自定義負載策略

例如:要求自定義的演算法:依舊是輪詢策略,但是每個伺服器被呼叫5次後輪到下乙個服務,即以前是每個服務被呼叫1次,現在是每個被呼叫5次。

注意:

官方文件指出,自定義的負載均衡配置類不能放在 @componentscan

所掃瞄的當前包下及其子包下,否則我們自定義的這個配置類就會被所有的ribbon客戶端所共享,也就是說我們達不到特殊化定製的目的了;

開啟消費者工程:

1、自定義演算法類必須繼承 abstractloadbalancerule 類

啟動類在com.yufeng.springcloud 包下,所以我們新建乙個包: con.yufeng.myrule,並在該包下新建乙個類:customerule

public

class

customerule

extends

abstractloadbalancerrule

server server = null;

while

(server == null)

list

uplist = lb.

getreachableservers()

;//當前存活的服務

list

alllist = lb.

getallservers()

;//獲取全部的服務

int servercount = alllist.

size()

;if(servercount ==0)

//int index = rand.nextint(servercount);

//server = uplist.get(index);

if(total <5)

else}if

(server == null)

if(server.

isalive()

) server = null;

thread.

yield()

;}return server;

}@override

public server choose

(object key)

@override

public

void

initwithniwsconfig

(iclientconfig clientconfig)

}

2、配置類中增加自定義規則

@configuration

public

class

configbean

@bean

public irule myrule()

}

3、主啟動類新增 @ribbonclient 註解,name和configuration引數很重要;

在啟動該微服務的時候就能去載入我們自定義的ribbon配置類,從而使配置生效:

@ribbonclient(name=「microservicecloud-dept」, configuration=configbean.class)

name指定針對哪個服務 進行負載均衡,而configuration指定負載均衡的演算法具體實現類。

4、啟動該消費者服務,然後訪問:http://localhost/consumer/dept/get/1,可以看到先訪問生產者1服務5次,然後訪問生產者2服務5次…

Ribbon負載均衡的實現

一.ribbon自己提供的七種策略 1.1 ribbon提供的策略及其功能效果介紹 輪詢 乙個節點一次無限迴圈的調。隨機 如其名隨機的,服務節點隨機無規則的調。重試 按照輪詢的策略獲取服務,如果失敗則會在指定的時間內一直重試輪詢獲取可用服務,預設時間500毫秒,可自定義時間。權重 初始化時去統計每乙...

Ribbon 自定義客戶端

ribbon的載入策略是懶載入,即第一次請求的時候才載入對應上下文,正是這個原因,很多時候第一次呼叫顯得很慢,甚至會超時,所以,可以通過指定ribbon具體服務名稱來開啟餓載入,即在工程啟動的時候,載入所有的配置上下文。如下 ribbon eager load enabled true client...

007 Ribbon的自定義配置

一 概述 在前面的一節之中,我們使用微服務的ribbon實現客戶端的負載均衡.為了更好的實現客戶端的負載均衡,可能我們需要使用不同的策略.本次我們修改之前的策略為隨機呼叫.二 修改負載均衡策略 1 新增乙個配置類,覆蓋掉之前的預設配置 configuration public class ribbo...