亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼

瀏覽:10日期:2023-08-03 18:46:05

1.1 簡介

1.1.1 概述

  Ribbon 是 Netflix 發(fā)布的負(fù)載均衡器,它有助于控制 HTTP 和 TCP 客戶端的行為。為 Ribbon 配置服務(wù)提供者地址列表后,Ribbon 就可基于某種負(fù)載均衡算法,自動地幫助服務(wù)消費者去請求。Ribbon 默認(rèn)為我們提供了很多的負(fù)載均衡算法,例如輪詢、隨機(jī)等。當(dāng)然,我們也可為 Ribbon 實現(xiàn)自定義的負(fù)載均衡算法。Ribbon 現(xiàn)在已經(jīng)進(jìn)入維護(hù)狀態(tài),但目前仍在大規(guī)模使用,Spring Cloud 準(zhǔn)備使用 LoadBalancer 作為 Ribbon 的替換方案。

1.1.2 相關(guān)依賴

  因為現(xiàn)在的注冊中心幫我們引入了 Ribbon 我們不需要再次引入就可以直接使用,當(dāng)然也可以再引入一次沒有影響。

Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency>

1.2 簡單使用

1.2.1 搭建項目

☞ eureka 項目

1.2.2 開啟負(fù)載均衡

  開啟負(fù)載均衡非常簡單,只需要在 RestTemplate 的配置方法上加上 @LoadBalanced 注解即可使用最簡單的輪詢。

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/29 * @description 消費者啟動類 */@SpringBootApplication@EnableDiscoveryClientpublic class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); }}

1.2.3 使用負(fù)載均衡

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/29 * @description */@RestController@RequestMapping('/consumer')public class ConsumerController { @Autowired private DiscoveryClient discoveryClient; @Autowired private RestTemplate restTemplate; @GetMapping('/go') public void go() { List<ServiceInstance> providerServer = discoveryClient.getInstances('ProviderServer'); if (0 == providerServer.size()) { return; } ServiceInstance serviceInstance = providerServer.get(0); String url = serviceInstance.getUri() + '/provider/get'; System.out.println(url + ' --- '); String str = restTemplate.getForObject(url, String.class); System.out.println(str); }}

  喔嚯!報錯了,明明可以訪問到為什么會報找不到實例呢?這是應(yīng)為咱們使用 DiscoveryClient 直接獲取到了服務(wù)提供者集群中某一個的地址,然后讓 RestTemplate 去進(jìn)行負(fù)載均衡。我們都已經(jīng)拿到了準(zhǔn)確地址再怎么進(jìn)行負(fù)載均衡?所以我們這里不能使用 IP 要使用服務(wù)名稱。

Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼

@RestController@RequestMapping('/consumer')public class ConsumerController { @Autowired private RestTemplate restTemplate; @GetMapping('/go') public void go() { String url = 'http://ProviderServer/provider/get'; String str = restTemplate.getForObject(url, String.class); System.out.println(str); }}

修改完畢之后就可以看到服務(wù)提供者是輪換進(jìn)行提供服務(wù)的

Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼

1.3 替換負(fù)載均衡策略

1.3.1 自帶負(fù)載均衡策略

Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼

策略名 策略描述 RoundRobinRule 輪詢選擇 server RandomRule 隨機(jī)選擇一個 serve RetryRule 先按輪詢策略獲取服務(wù),如果獲取服務(wù)失敗則在指定時間內(nèi)重試,獲取可用服務(wù) BestAvailableRule 會先過濾由于多次訪問故障而處于斷路器跳閘狀態(tài)的服務(wù),然后選擇一個并發(fā)量最小的服務(wù) AvailabilityFilteringRule 會優(yōu)先過濾故障實例,再選擇并發(fā)較小的實例 WeightedResponseTimeRule 對輪詢的擴(kuò)展,響應(yīng)速度越快的實例選擇比重權(quán)越大,越容易被選擇 ZoneAvoidanceRule 復(fù)合判斷 server 所在區(qū)域的性能和 server 的可用性選擇 server

1.3.2 使用配置類

  官方文檔明確警告,這個自定義配置類不能放在 @ComponedtScan 所掃描的當(dāng)前包下以及子包下,否則我們自定義的這個配置類就會被所有的 Ribbon 客戶端所共享。即在 Spring Boot 主程序掃描的包外定義配置類或在與 Spring Boot 主程序的同一級目錄但在排除掃描。配置類創(chuàng)建完畢后為 Spring Boo 主程序添加 @RibbonClient 注解引入配置類,用 name 屬性來指定調(diào)用的服務(wù)名稱,configuration 屬性指定自定義配置類

@Configurationpublic class MyRibbonRule { @Bean public IRule ribbonRule() { return new RandomRule(); }}

@SpringBootApplication@EnableDiscoveryClient// 用 name 來指定調(diào)用的服務(wù)名稱,configuration 指定自定義配置類@RibbonClient(name = 'ProviderServer', configuration = MyRibbonRule.class)public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); }}

Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼

1.3.3 配置文件

# 這種配置的優(yōu)先級低于配置類# 想要調(diào)用的服務(wù)名稱,即服務(wù)提供者名稱ProviderServer: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼

☞ 源碼

到此這篇關(guān)于Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼的文章就介紹到這了,更多相關(guān)Spring Cloud 負(fù)載均衡 Ribbon內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 日韩毛片免费看 | 极品美女一级毛片 | 精品日韩一区二区 | 国产日韩欧美高清 | 久久久久国产精品免费免费不卡 | 免费涩涩在线视频网 | 在线观看人成网站深夜免费 | 一区二区三区四区在线视频 | 色婷婷一区二区三区四区成人 | 性欧美一级毛片在线播放 | 国产成人免费手机在线观看视频 | aaaaaa国产毛片孕妇版 | 亚洲免费播放 | 成人黄色在线播放 | 黄黄的网站在线观看 | 特黄特级高清免费视频毛片 | 亚洲涩色 | 亚洲欧美综合国产不卡 | 亚洲欧美日韩一级特黄在线 | 青青操夜夜操 | 99www综合久久爱com | 91精品国产91久久久久久最新 | 久亚洲精品不子伦一区 | 好爽好深好猛好舒服视频上 | 女人被狂躁的免费视频网站软件 | 国产亚洲欧美久久久久 | 欧美搞黄视频 | 久久国产自偷自免费一区100 | 亚洲综合成人网在线观看 | a天堂专区一区二区三区 | 国产精品久久久久久一区二区 | 成人午夜国产福到在线 | 久草精彩视频 | 在线看污片 | 久久婷婷国产综合精品青草 | 免费观看在线永久免费xx视频 | 国产真实一区二区三区 | 久久久久久综合成人精品 | 国产精品美女福利视频一区 | 一级做a爰片久久毛片免费 一级做a爰片久久毛片免费看 | 成人黄色片在线观看 |