spring cloud 集成 ribbon負(fù)載均衡的實(shí)例代碼
本文比較簡單集成ribbon,如需要更詳細(xì),請查看我的更多博客內(nèi)容。
首先創(chuàng)建兩個服務(wù)提供者

服務(wù)一,集成的nacos注冊中心,這塊隨便寫一個同名接口

端口配置8301

服務(wù)二,同名接口內(nèi)容修改,其他跟上一個服務(wù)一大體內(nèi)容一致

端口配置成8302

創(chuàng)建服務(wù)消費(fèi)者

RibbonConfig.java
package com.example.nacosribbonconsumers.config;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RoundRobinRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
// 如果多個服務(wù)可以選擇不同的策略
/*@RibbonClients({
@RibbonClient(name = "other",configuration = OtherConfig.class),
@RibbonClient(name = "provider",configuration = ProviderConfig.class)
})*/
@RibbonClient(name = "nacos-ribbon-provider")
public class RibbonConfig {
//定義負(fù)載均衡規(guī)則
@Bean
public IRule ribbonRule(){
return new RoundRobinRule();
/**
* RoundRobinRule:
* 輪詢規(guī)則
*
* RandomRule:
* 隨機(jī)規(guī)則
*
* WeightedResponseTimeRule:
* 使用響應(yīng)時間的平均或者百分比為每個服務(wù)分配權(quán)重的規(guī)則,如果沒法收集響應(yīng)時間信息,會默認(rèn)使用輪詢規(guī)則
*
* BestAvailableRule:
* 會先根據(jù)斷路器過濾掉處于故障的服務(wù),然后選擇并發(fā)量最小的服務(wù)
*
* ZoneAvoidanceRule:
* 根據(jù)server所在Zone和其性能,選擇服務(wù)器,默認(rèn)規(guī)則
*
* AvailabilityFilteringRule:
* 先根據(jù)斷路器規(guī)則過濾掉有問題的服務(wù),然后對剩余的服務(wù)按照輪詢的策略進(jìn)行訪問
*
* RetryRule:
* 先按照RoundRobinRule規(guī)則進(jìn)行服務(wù)獲取,如果調(diào)用服務(wù)失敗會在指定時間內(nèi)進(jìn)行重試,直到獲取到可用的服務(wù)。
*/
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
RibbonTest.java
package com.example.nacosribbonconsumers.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class RibbonTest {
@Autowired
private RestTemplate restTemplate;
@GetMapping(value = "/ribbon-consumers/ribbon-test")
public String printProviderLog(){
String result = restTemplate.getForObject("http://nacos-ribbon-provider/ribbon-test", String.class);
return result;
}
}
pom包
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
配置文件

先啟動兩個服務(wù)提供者,然后在啟動服務(wù)消費(fèi)者,瀏覽訪問


不斷刷新 發(fā)現(xiàn)使用的輪詢方式交替執(zhí)行。
到此這篇關(guān)于spring cloud 集成 ribbon負(fù)載均衡的文章就介紹到這了,更多相關(guān)spring cloud ribbon負(fù)載均衡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring?Cloud?Ribbon的使用原理解析
- SpringCloud超詳細(xì)講解負(fù)載均衡組件Ribbon源碼
- SpringCloud?客戶端Ribbon負(fù)載均衡的實(shí)現(xiàn)方法
- Spring?Cloud負(fù)載均衡組件Ribbon原理解析
- Spring?Cloud?Ribbon?中的?7?種負(fù)載均衡策略的實(shí)現(xiàn)方法
- 關(guān)于SpringCloud?Ribbon替換輪詢算法問題
- 聊聊SpringCloud中的Ribbon進(jìn)行服務(wù)調(diào)用的問題
- 深入理解Java SpringCloud Ribbon 負(fù)載均衡
- Spring Cloud Ribbon客戶端詳細(xì)介紹
相關(guān)文章
Java實(shí)戰(zhàn)之用Spring開發(fā)條形碼和驗證碼
這篇文章主要介紹了Java實(shí)戰(zhàn)之用Spring開發(fā)條形碼和驗證碼,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
基于Java在netty中實(shí)現(xiàn)線程和CPU綁定
這篇文章主要介紹了基于Java在netty中實(shí)現(xiàn)線程和CPU綁定,文章圍繞主題的相關(guān)內(nèi)容展開詳細(xì)介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05
Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫分離
這篇文章主要介紹了Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫分離的示例,幫助大家更好的理解和使用Spring Boot框架,感興趣的朋友可以了解下2020-11-11
Spring Security中的Servlet過濾器體系代碼分析
這篇文章主要介紹了Spring Security中的Servlet過濾器體系,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
聊聊@RequestBody和Json之間的關(guān)系
這篇文章主要介紹了@RequestBody和Json之間的關(guān)系,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Java線程實(shí)現(xiàn)時間動態(tài)顯示
這篇文章主要為大家詳細(xì)介紹了Java線程實(shí)現(xiàn)時間動態(tài)顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-04-04

