最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud中的Ribbon負載均衡器詳細解析

 更新時間:2024年01月31日 10:12:51   作者:卷不動躺不平的粥  
這篇文章主要介紹了SpringCloud中的Ribbon負載均衡器詳細解析,Ribbon 是一個基于 HTTP 和 TCP 的客戶端負載均衡工具,它基于 Netflix Ribbon 實現(xiàn),通過封裝可以讓我們輕松地將面向服務(wù)的 REST 模版請求自動轉(zhuǎn)換成客戶端負載均衡的服務(wù)調(diào)用,需要的朋友可以參考下

一、Ribbon的簡介

1.1 簡介

Spring Cloud Ribbon 是一個基于 HTTP 和 TCP 的客戶端負載均衡工具,它基于 Netflix Ribbon 實現(xiàn)。通過 Spring Cloud 的封裝,可以讓我們輕松地將面向服務(wù)的 REST 模版請求自動轉(zhuǎn)換成客戶端負載均衡的服務(wù)調(diào)用。

目前主流的負載方案分為以下兩種:

  • 集中式負載均衡,在消費者和服務(wù)提供方中間使用獨立的代理方式進行負載,有硬件的(比如 F5),也有軟件的(比如 Nginx)。
  • 客戶端自己做負載均衡,根據(jù)自己的請求情況做負載,Ribbon 就屬于客戶端自己做負載。

1.2 引言

Robbin是幫助我們實現(xiàn)服務(wù)與服務(wù)之間的負載均衡。

  • 客戶端負載均衡:customer客戶端模塊,將2個Search模塊信息全部拉取到本地的緩存,在customer中自己做一個負載均衡的策略,選中某一個服務(wù)。
  • 服務(wù)端負載均衡:在注冊中心中,直接根據(jù)你指定的負載均衡策略,幫你選中一個指定的服務(wù)器信息,并返回。

二、快速入門

2.1 啟動兩個Search模塊

通過 Run/Debug Configurations 啟動兩個 Search模塊。

2.2 導(dǎo)入Ribbon相關(guān)依賴

在 customer 中導(dǎo)入 Ribbon 相關(guān)依賴。

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

2.3 整合 RestTemplate 和 Ribbon

在注入 RestTemplate 的方法上添加 @LoadBalanced 注解,即可整合 RestTemplate 和 Ribbon 。

//@LoadBalanced 將RestTemplate和Robbin整合
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}

2.4 訪問 Search

通過整合了 Ribbon 的 RestTemplate 去訪問Search (原來的 ip:port 現(xiàn)在可以用服務(wù)名代替)。

@GetMapping("/customer")
public String customer() {
    String result = restTemplate.getForObject("http://SEARCH/search", String.class);
    return result;
}

三、Ribbon 的負載均衡

Ribbon 作為一款客戶端負載均衡框架,默認的負載策略是輪詢,同時也提供了很多其他的策略,能夠讓用戶根據(jù)自身的業(yè)務(wù)需求進行選擇。

3.1 Ribbon負載均衡簡介

BestAvailabl

選擇一個最小的并發(fā)請求的 Server,逐個考察 Server,如果 Server 被標(biāo)記為錯誤,則跳過,然后再選擇 ActiveRequestCount 中最小的 Server。

AvailabilityFilteringRule

過濾掉那些一直連接失敗的且被標(biāo)記為 circuit tripped 的后端 Server,并過濾掉那些高并發(fā)的后端 Server 或者使用一個 AvailabilityPredicate 來包含過濾 Server 的邏輯。其實就是檢查 Status 里記錄的各個 Server 的運行狀態(tài)。

ZoneAvoidanceRule

使用 ZoneAvoidancePredicate 和 AvailabilityPredicate 來判斷是否選擇某個 Server,前一個判斷判定一個 Zone 的運行性能是否可用,剔除不可用的 Zone(的所有 Server),AvailabilityPredicate 用于過濾掉連接數(shù)過多的 Server。

RandomRule(隨機策略)

隨機選擇一個 Server。

RoundRobinRule(輪詢策略)

輪詢選擇,輪詢 index,選擇 index 對應(yīng)位置的 Server。

RetryRule

對選定的負載均衡策略機上重試機制,也就是說當(dāng)選定了某個策略進行請求負載時在一個配置時間段內(nèi)若選擇 Server 不成功,則一直嘗試使用 subRule 的方式選擇一個可用的 Server。

ResponseTimeWeightedRule

作用同 WeightedResponseTimeRule,ResponseTime-Weighted Rule 后來改名為 WeightedResponseTimeRule。

WeightedResponseTimeRule

默認會采用輪詢的策略,,根據(jù)響應(yīng)時間會自動分配一個 Weight(權(quán)重),響應(yīng)時間越長,Weight 越小,被選中的可能性越低。

3.2 Ribbon負載均衡的使用

3.2.1 采用注解的方式實現(xiàn)負載均衡

在 Ribbon Client 端注入策略的對象即可。

//配置robbinRule策略
@Bean
public IRule robbinRule(){
    return new RandomRule();
}

3.2.2 采用配置文件的方式實現(xiàn)負載均衡

#指定具體服務(wù)的負載均衡策略
SEARCH:        #編寫服務(wù)名稱
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule  #具體負載均衡使用的類

到此這篇關(guān)于SpringCloud中的Ribbon負載均衡器詳細解析的文章就介紹到這了,更多相關(guān)Ribbon負載均衡器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring mvc高級技術(shù)實例詳解

    spring mvc高級技術(shù)實例詳解

    前面學(xué)習(xí)了簡單的Spring Web知識,接著學(xué)習(xí)更高階的Web技術(shù)。下面這篇文章主要給大家介紹了spring mvc高級技術(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧
    2018-09-09
  • 詳細講解Java中的main()方法

    詳細講解Java中的main()方法

    在java中main()方法是java應(yīng)用程序的入口方法,由此可見main方法是很重要的,那么下面這篇文章就給大家詳解介紹了Java中的main()方法,需要的朋友可以參考下。
    2016-09-09
  • 使用Feign調(diào)用form-data的接口問題

    使用Feign調(diào)用form-data的接口問題

    文章介紹了當(dāng)不想使用restTemplate處理form-data接口時,可以通過設(shè)計一個轉(zhuǎn)換器并在Feign類上加入轉(zhuǎn)換器配置來解決,在Feign定義的方法中,如果接口有多參數(shù),需要使用@RequestParam注解聲明變量,否則會報錯,文章總結(jié)了個人經(jīng)驗,希望能給大家提供幫助
    2026-01-01
  • Java class文件格式之?dāng)?shù)據(jù)類型_動力節(jié)點Java學(xué)院整理

    Java class文件格式之?dāng)?shù)據(jù)類型_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Java class文件格式之?dāng)?shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java?IO異常如何處理詳析

    Java?IO異常如何處理詳析

    異常就是Java程序在運行過程中出現(xiàn)的錯誤,下面這篇文章主要給大家介紹了關(guān)于Java?IO異常如何處理的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 提示:Decompiled.class file,bytecode version如何解決

    提示:Decompiled.class file,bytecode version如何解決

    在處理Decompiled.classfile和bytecodeversion問題時,通過修改Maven配置文件,添加阿里云鏡像并去掉默認鏡像,解決了下載源的問題,同時,檢查并修改了依賴版本,確保了問題的解決
    2024-12-12
  • Java解析方法的調(diào)用關(guān)系示例詳解

    Java解析方法的調(diào)用關(guān)系示例詳解

    這篇文章主要介紹了Java解析方法的調(diào)用關(guān)系,方法在Java編程中用于封裝重復(fù)的代碼,提高代碼復(fù)用性,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • 解決Spring Cloud feign GET請求無法用實體傳參的問題

    解決Spring Cloud feign GET請求無法用實體傳參的問題

    這篇文章主要介紹了解決Spring Cloud feign GET請求無法用實體傳參的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java 日志中 Marker 的使用示例詳解

    Java 日志中 Marker 的使用示例詳解

    Marker是SLF4J(以及Logback、Log4j 2)提供的一個接口,它本質(zhì)上是一個命名對象,你可以把它想象成一個可以附加到日志語句上的"標(biāo)簽"或"戳記",本文給大家介紹Java日志中Marker的使用示例,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • SpringBoot3實現(xiàn)統(tǒng)一結(jié)果封裝的示例代碼

    SpringBoot3實現(xiàn)統(tǒng)一結(jié)果封裝的示例代碼

    Spring Boot進行統(tǒng)一結(jié)果封裝的主要目的是提高開發(fā)效率、降低代碼重復(fù)率,并且提供一致的API響應(yīng)格式,從而簡化前后端交互和錯誤處理,所以本文給大家介紹了SpringBoot3實現(xiàn)統(tǒng)一結(jié)果封裝的方法,需要的朋友可以參考下
    2024-03-03

最新評論

宣威市| 思南县| 齐河县| 冀州市| 驻马店市| 莱西市| 临湘市| 浏阳市| 蚌埠市| 平谷区| 鲁甸县| 黎川县| 河间市| 德江县| 嘉兴市| 江达县| 龙岩市| 民和| 万载县| 武邑县| 黔南| 朝阳市| 天峨县| 密云县| 宜兰市| 安溪县| 芜湖县| 尚义县| 永登县| 读书| 家居| 龙州县| 呼伦贝尔市| 丰宁| 建湖县| 兴国县| 宝丰县| 涪陵区| 株洲县| 麦盖提县| 奉新县|