springcloud及負載均衡元件Ribbon

2021-10-21 08:44:17 字數 3120 閱讀 4839

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...