SpringCloud 負載均衡 Ribbon

2021-10-05 19:33:29 字數 2741 閱讀 4397

spring cloud ribbon是基於netflix ribbon實現的一套客戶端 負載均衡工具

負載均衡介紹:

nginx負載均衡和ribbon區別:

nginx是集中式的負載均衡,ribbon是程序內的負載均衡

ribbon其實就是乙個軟負載均衡的客戶元件,它可以和其他所需請求的客戶端結合使用,和eureka結合只是其中乙個例項

ribbon 負載均衡架構原理圖:

ribbon負載均衡的使用很簡單:

ribbon的使用就是 resttemplate + @loadbalanced 負載均衡的使用

@bean

@loadbalanced

public resttemplate resttemplate()

}

許多註冊中心都已經引入了 ribbon元件

如:eureka客戶端的依賴

所以我們不需要引入ribbon 即可直接用

irule介面原始碼如下:

package com.netflix.loadbalancer;

/** * inte***ce that defines a "rule" for a loadbalancer. a rule can be thought of

* as a strategy for loadbalacing. well known loadbalancing strategies include

* round robin, response time based etc.

* * @author stonse

* */

public

inte***ce

irule

irule 介面的 是定義負載均衡規則的介面,irule有許多落地的實現,如下圖所示:

各個負載均衡的策略如下圖所示:

ribbon預設的負載均衡策略是輪詢

修改為其他負載均衡策略步驟如下:(本例修改為隨機即 randomrule )

新建立乙個包,該包不能在主啟動類所在的包及其子報下,避免專案啟動就被掃瞄

在該包下新建配置類 如下:

import com.netflix.loadbalancer.irule;

import com.netflix.loadbalancer.randomrule;

import org.springframework.context.annotation.configuration;

@configuration

public

class

myrule

}

主啟動類上新增@ribbonclient注意@ribbonclient 引數:

name = "springcloud-payment-provider":是註冊中心某個服務名,

configuration = myrule.class:我們自己配置負載均衡策略

@ribbonclient

(name =

"springcloud-payment-provider"

, configuration = myrule.

class

)@enableeurekaclient

@enablediscoveryclient

public

class

{

SpringCloud負載均衡

ribbon負載均衡應用 目標 配置啟動resttemplate,訪問http user service user 8獲取服務資料 需求 可以使用ribbon負載均衡演算法從服務位址列表中選擇乙個服務位址,訪問該位址獲取服務資料 實現步驟 1.啟動多個user service 9091,9092 2...

Spring Cloud 負載均衡

在spring cloud構件微服務系統中,loadbalancer作為服務消費者的負載均衡器,有兩種使 式,種是和resttemplate相結合,另 種是和feign相結合,feign已經預設整合loadbalancer 這裡我們使用 裡面的02 payment 微服務進行改造 server po...

Spring Cloud負載均衡(二)

package com.example.springcloudlesson6 import org.springframework.cloud.client.discovery.enablediscoveryclient import org.springframework.cloud.client...