ribbon簡介
spring cloud ribbon是乙個基於http和tcp的客戶端負載均衡工具,它基於netflix ribbon實現。通過spring cloud的封裝,可以讓我們輕鬆地將面向服務的rest模版請求自動轉換成客戶端負載均衡的服務呼叫。
ribbon入門案例
我們使用eureka元件可以完成服務的註冊與發現服務間通訊我們使用resttemplate客戶端
我們為什麼還要使用ribbon?
因為在微服務專案中,集群是基礎,乙個微服務往往搭建集群,那麼當服務之間呼叫時,我們應該呼叫哪乙個微服務呢?這個時候就需要ribbon元件進行負載均衡,根據一定的負載均衡策略,幫助我們選擇呼叫哪乙個微服務
說明
如果使用的是eureka client 和 consul client,無須引入依賴,因為在eureka,consul中預設整合了ribbon元件
如果使用的client中沒有ribbon依賴需要顯式引入如下依賴
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-netflix-ribbonartifactid
>
dependency
>
2.檢視consul client中依賴的ribbon
3.使用resttemplate + ribbon進行服務呼叫
3.1 使用discovery client形式呼叫
@restcontroller
("/consumer"
)public
class
usercontroller")
public user querybyid
(@pathvariable
(value =
"id"
)integer id)
}
3.2 使用loadbalance client形式呼叫
@autowired
private loadbalancerclient loadbalancerclient;
//根據負載均衡策略選取某乙個服務呼叫
serviceinstance product = loadbalancerclient.
choose
("服務id");
//位址 輪詢策略
log.
info
("服務主機:[{}]"
,product.
gethost()
);log.
info
("服務埠:[{}]"
3.3 使用@loadbalanced
@configuration
//表示這是乙個配置類,相當於spring的
public
class
resttemplateconfig
}
//1.整合resttemplate + ribbon
@bean
@loadbalanced
public resttemplate getresttemplate()
//2.呼叫服務位置注入resttemplate
@autowired
private resttemplate resttemplate;
//3.呼叫
string forobject = resttemplate.
getforobject
("http://服務id/hello/hello?name="
+ name, string.
class
);
ribbon負載均衡策略
`1.ribbon負載均衡演算法
修改服務的預設負載均衡策略
修改服務預設隨機策略
服務id
:ribbon
:nfloadbalancerruleclassname
: com.netflix.loadbalancer.randomrule
下面的products為服務的唯一標識
user-provider
:ribbon
:nfloadbalancerruleclassname
: com.netflix.loadbalancer.randomrule
小結1、負載均衡流程
+ 需要加入起步依賴
+ resttemplate新增乙個註解@loadbalanced
+ 使用的時候使用服務名進行呼叫user-provider
+ 首先根據ribbon的***進行攔截 根據負載均衡策略(根據配置來,預設是輪詢)從eureka中獲取服務列表 選擇乙個服務,
然後再使用httpclient進行封裝,模擬瀏覽器傳送請求(請求的路徑:摸乙個選中ip:port/路徑)
2、負載均衡策略
+ 輪詢(預設)
+ 隨機
+ 重試(先根據輪詢策略,如果失敗在一定時間進行重試)
+ 權重(根據平均響應時間算出權重)
springcloud(Ribbon負載均衡)
搭建步驟 1.使用者服務的集群 2.訂單服務整合ribbon 2.1.匯入ribbon的依賴 2.2.在resttemplate的bean定義方法上加上 loadbalanced註解 2.3.把訂單的controller向使用者發起呼叫的resttemplate的url使用服務名呼叫,如 http ...
SpringCloud Ribbon 負載均衡
ribbon eureka都是netflix旗下的專案,eureka client內建了ribbon,用於實現負載均衡,預設使用輪詢。輪詢是最簡單的負載均衡演算法,每次呼叫服務拿到節點列表後,從前往後依次輪詢類表中的每個節點,誰空閒就呼叫誰。測試時往往都是呼叫列表的第乙個節點,因為重新整理的手速遠遠...
linux centos nginx做負載均衡
nginx 是 c語言 開發,建議在 linux 上執行,當然,也可以安裝 windows 版本,本篇則使用 centos 7 作為安裝環境。一.gcc 安裝 yum install gcc c 二.pcre pcre devel 安裝pcre perl compatible regular exp...