国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡

這篇具有很好參考價值的文章主要介紹了SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.Ribbon負(fù)載均衡流程

假設(shè)我們有一臺 order-service 訂單服務(wù),兩臺 user-service 用戶服務(wù),當(dāng)訂單服務(wù)需要調(diào)用用戶服務(wù)獲取用戶信息的時候,應(yīng)該怎么分配調(diào)用哪臺服務(wù)呢?

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡,Spring Cloud,spring cloud,ribbon,負(fù)載均衡

這時候就需要用到 Ribbon 組件了。

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡,Spring Cloud,spring cloud,ribbon,負(fù)載均衡

首先,我們發(fā)起遠(yuǎn)程調(diào)用的時候,指定的是需要調(diào)用的服務(wù)名稱,然后我們會調(diào)用 Ribbon 組件,Ribbon 會從注冊中心中拉取 user-service 服務(wù)的信息,其中就包括這兩臺 user-service 服務(wù)的所在地址,這時候 order-service 就獲取到 user-service 服務(wù)所在的兩個地址了。

那么這兩個地址我們怎么選擇其中一個地址進(jìn)行調(diào)用呢?這時候就由 Ribbon 決定到底選擇哪一臺服務(wù)器進(jìn)行調(diào)用,它選用的策略是輪詢。比如:找到的第一個服務(wù)器是8081,那么 order-service 最終進(jìn)行調(diào)用的就是 8081 的 user-service 服務(wù)。

當(dāng)然,輪詢只是 Ribbon 中的其中一種負(fù)載均衡策略,那么其他還有哪些負(fù)載均衡策略呢?

2.Ribbon負(fù)載均衡策略

Ribbon 中一共封裝了 7 種負(fù)載均衡策略,

1)RoundRobinRule:簡單輪詢服務(wù)列表來選擇服務(wù)器。

就是按照一定的順序去調(diào)用服務(wù)的實例。比如我們剛才有 8081 和 8082 的兩個 user-service 實例,假如第一次調(diào)用 8081,那么第二次就會調(diào)用 8082 了,以此類推。

2)WeightedResponseTimeRule:按照權(quán)重來選擇服務(wù)器,響應(yīng)時間越長,權(quán)重越小。

其中的 ResponseTime 就是指響應(yīng)時間,意思是說響應(yīng)時間越長,權(quán)重就越小,被選擇的概率就越低。

3)RandomRule:隨機選擇一個可用的服務(wù)器。

這個比較簡單,就是單純的隨機。

4)BestAvailableRule:忽略那些短路的服務(wù)器,并選擇并發(fā)數(shù)較低的服務(wù)器。

最小連接數(shù)策略。舉個例子,比如我們還是有兩臺服務(wù)器,第一臺的連接數(shù)是100,第二臺是50,那這時候就會選擇50的連接數(shù)對應(yīng)的服務(wù)器進(jìn)行連接,這就是指并發(fā)數(shù)較低的服務(wù)器,也可以理解成是選擇一個空閑比較多的服務(wù)器進(jìn)行連接。

5)RetryRule:重試機制的選擇邏輯。

首先,還是會按照輪詢的方式選擇服務(wù),然后進(jìn)行遠(yuǎn)程調(diào)用。但是,假如某些服務(wù)實例為null,或者某些服務(wù)實例已經(jīng)宕機失效了,它就會按照指定的時間進(jìn)行不斷地重試,來去獲取這個服務(wù),這個就是重試機制的選擇邏輯。

6)AvailabilityFilteringRule:可用性敏感策略,先過濾非健康的,再選擇連接數(shù)較小的實例。

比如說我們有三臺服務(wù)器,如果第一臺服務(wù)器已經(jīng)宕機了,很顯然就不選擇第一臺服務(wù)器了,然后再從第二、三臺服務(wù)器中選擇連接數(shù)比較小的實例,比如第二臺服務(wù)器的連接數(shù)是100,第三臺服務(wù)器的連接數(shù)是50,那么很顯然就要去選擇第三臺服務(wù)器。

7)ZoneAvoidanceRule:默認(rèn)策略,以區(qū)域可用的服務(wù)器為基礎(chǔ)進(jìn)行服務(wù)器的選擇。使用 Zone 對服務(wù)器進(jìn)行分類,這個 Zone 可以理解為一個機房、一個機架等。而后再對 Zone 內(nèi)的多個服務(wù)做輪詢。

意思是說,服務(wù)很多的時候,就會存在很多機房,比如一個在上海,一個在北京。假如服務(wù)的調(diào)用方也在北京,那么就會優(yōu)先選擇北京的機房服務(wù)器進(jìn)行連接,就近原則。一般情況下,比如說我們沒有區(qū)域的概念,那么這時候還是會根據(jù)輪詢的方式來完成調(diào)用。

以上就是 Ribbon 最常見的七種負(fù)載均衡策略,標(biāo)紅的是面試的時候最好能給面試官陳述出來的部分。

3.自定義負(fù)載均衡策略如何實現(xiàn)

我們可以自己創(chuàng)建類實現(xiàn) IRule 接口,然后再通過配置類或配置文件配置即可,通過定義 IRule 實現(xiàn)可以修改負(fù)載均衡規(guī)則,有兩種方式。

假如我們有一個 order-service 訂單服務(wù)調(diào)用 user-service 用戶服務(wù),用戶服務(wù)有 8081 和 8082 兩個節(jié)點。

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡,Spring Cloud,spring cloud,ribbon,負(fù)載均衡

現(xiàn)在我們想實現(xiàn)自定義的負(fù)載均衡策略,我們都是在服務(wù)的發(fā)起方 order-service 進(jìn)行配置的。

第一種方法: 我們可以加一個配置類,在配置類中設(shè)置一個返回值 IRule,我們可以直接將七種負(fù)載均衡策略中的其中一種進(jìn)行返回。

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡,Spring Cloud,spring cloud,ribbon,負(fù)載均衡

第二種方式: 我們可以在 yaml 文件中進(jìn)行配置。

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡,Spring Cloud,spring cloud,ribbon,負(fù)載均衡

user-service:
  ribbon:
    NFLoadBalanceRuleClassName: com.netflix.loadbalancer.RandomRule # 負(fù)載均衡規(guī)則

這兩種配置方式有什么不同?

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡,Spring Cloud,spring cloud,ribbon,負(fù)載均衡

  • 第一種通過配置類自定義注入 Bean 的方式,是全局生效的。

    意思是只要是 order-service 服務(wù)采用 Ribbon 進(jìn)行的負(fù)載均衡調(diào)用都是使用的自定義負(fù)載均衡策略。

  • 第二種通過 yaml 配置的方式,是局部生效的。

    意思是在 order-service 服務(wù)采用 Ribbon 進(jìn)行負(fù)載均衡的時候,只有請求 user-service 服務(wù)的請求是使用的自定義負(fù)載均衡策略。

4.總結(jié)

1)項目負(fù)載均衡如何實現(xiàn)?

微服務(wù)的負(fù)載均衡主要使用了一個組件 Ribbon,比如,我們在使用 feign 遠(yuǎn)程調(diào)用的過程中,底層的負(fù)載均衡就是使用了 Ribbon。

2)Ribbon負(fù)載均衡有哪些?

  • RoundRobinRule:簡單輪詢服務(wù)列表來選擇服務(wù)器。
  • WeightedResponseTimeRule:按照權(quán)重來選擇服務(wù)器,響應(yīng)時間越長,權(quán)重越小。
  • RandomRule:隨機選擇一個可用的服務(wù)器。
  • ZoneAvoidanceRule:默認(rèn),區(qū)域敏感策略,以區(qū)域可用的服務(wù)器為基礎(chǔ)進(jìn)行服務(wù)器的選擇。使用 Zone 對服務(wù)器進(jìn)行分類,這個 Zone 可以理解為一個機房、一個機架等。而后再對 Zone 內(nèi)的多個服務(wù)做輪詢。

3)自定義負(fù)載均衡策略如何實現(xiàn)?

提供了兩種方式:

① 創(chuàng)建類實現(xiàn) IRule 接口,可以指定負(fù)載均衡策略(全局生效)。

② 在客戶端的 yaml 配置文件中,可以配置某一個服務(wù)調(diào)用的負(fù)載均衡策略(局部生效)。

5.思考

1)如果通過 feign 調(diào)用本服務(wù),會負(fù)載均衡嗎?

答案:。因為即使調(diào)用本服務(wù),也會先從注冊中心獲取服務(wù)所有節(jié)點的地址信息去負(fù)載均衡。

比如,我們寫一個下面這樣的 Controller 來動態(tài)打印當(dāng)前服務(wù)的端口:

@RestController
@RequestMapping("/demo")
public class DemoController {

    @Value("${server.port:}")
    private String port;

    @Autowired
    private DemoFeignClient demoFeignClient;

    @GetMapping("/test")
    public Result<Object> test() {
        String data = "This is a test! port:" + port;
        return Result.succeed().setData(data);
    }

    @GetMapping("/feignTest")
    public Result<Object> feignTest() {
        return demoFeignClient.test();
    }
}

我們再寫一個 feign client 類來調(diào)用本服務(wù)的接口:

@FeignClient(value = "springboot-feign")
public interface DemoFeignClient {

    @GetMapping("/demo/test")
    Result<Object> test();
}

當(dāng)我們用 8081 和 8082 端口來啟動兩個實例后,調(diào)用接口:http://localhost:8081/demo/feignTest,可以發(fā)現(xiàn)返回的端口實際上是輪詢打印的:

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡,Spring Cloud,spring cloud,ribbon,負(fù)載均衡

SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡,Spring Cloud,spring cloud,ribbon,負(fù)載均衡

整理完畢,完結(jié)撒花~ ??文章來源地址http://www.zghlxwxcb.cn/news/detail-516263.html

到了這里,關(guān)于SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringCloud Ribbon中的7種負(fù)載均衡策略

    SpringCloud Ribbon中的7種負(fù)載均衡策略

    負(fù)載均衡通器常有兩種實現(xiàn)手段,一種是服務(wù)端負(fù)載均衡器,另一種是客戶端負(fù)載均衡器,而我們今天的主角 Ribbon 就屬于后者——客戶端負(fù)載均衡器。 服務(wù)端負(fù)載均衡器的問題是,它提供了更強的流量控制權(quán),但無法滿足不同的消費者希望使用不同負(fù)載均衡策略的需求,而

    2024年02月11日
    瀏覽(26)
  • Spring Cloud Ribbon:負(fù)載均衡

    1. 介紹 Spring Cloud Ribbon 1.1 什么是 Spring Cloud Ribbon Spring Cloud Ribbon是Netflix開源的負(fù)載均衡器,它為分布式服務(wù)提供了客戶端負(fù)載均衡的功能。Ribbon可以根據(jù)一系列的負(fù)載均衡算法和配置策略,將客戶端的請求動態(tài)分發(fā)到多個服務(wù)實例上,以實現(xiàn)高可用性和性能優(yōu)化。 1.2 負(fù)載均

    2024年02月19日
    瀏覽(22)
  • 【Spring Cloud 四】Ribbon負(fù)載均衡

    【Spring Cloud 四】Ribbon負(fù)載均衡

    【Spring Cloud一】微服務(wù)基本知識 【Spring Cloud 三】Eureka服務(wù)注冊與服務(wù)發(fā)現(xiàn) 目前公司項目使用的注冊中心主要是Spring Cloud Alibaba的Nacos做的注冊中心和配置中心。并且Nacos使用了Ribbon作為默認(rèn)的負(fù)載均衡器。但是相當(dāng)于將Ribbon的負(fù)載均衡給透明化了,日常開發(fā)明面上是看不到

    2024年02月14日
    瀏覽(27)
  • Ribbon:Spring Cloud負(fù)載均衡與服務(wù)調(diào)用組件

    Ribbon:Spring Cloud負(fù)載均衡與服務(wù)調(diào)用組件

    負(fù)載均衡? Ribbon實現(xiàn)服務(wù)調(diào)用? Ribbon實現(xiàn)負(fù)載均衡? 切換負(fù)載均衡策略? 定制負(fù)載均衡策略? 負(fù)載均衡 負(fù)載均衡(Load Balance),將用戶的請求平分到多個服務(wù)器上運行,以擴展服務(wù)器帶寬、增強數(shù)據(jù)處理能力、增加吞吐量、提高網(wǎng)絡(luò)的可用性和靈活性的目的。 服務(wù)端負(fù)載

    2024年02月03日
    瀏覽(29)
  • Spring Cloud之負(fù)載均衡與服務(wù)調(diào)用(Ribbon)

    Spring Cloud之負(fù)載均衡與服務(wù)調(diào)用(Ribbon)

    目錄 Ribbon 簡介 負(fù)載均衡 簡介 負(fù)載均衡方式 服務(wù)端負(fù)載均衡 工作原理 特點 客戶端負(fù)載均衡 工作原理 特點 對比 實現(xiàn) 負(fù)載均衡策略 切換負(fù)載均衡策略 定制負(fù)載均衡策略 超時與重試 單個服務(wù)配置 全局配置 服務(wù)調(diào)用 示例 ????????Ribbon 是 Netflix 公司發(fā)布的開源組件,其

    2024年02月08日
    瀏覽(18)
  • Spring Cloud 實戰(zhàn) | 解密負(fù)載均衡Ribbon底層原理,包含實戰(zhàn)源碼

    Spring Cloud 實戰(zhàn) | 解密負(fù)載均衡Ribbon底層原理,包含實戰(zhàn)源碼

    專欄集錦,大佬們可以收藏以備不時之需 Spring Cloud實戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9270827.html Python 實戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9271194.html Logback 詳解專欄:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow專欄:https://blog.csdn.net/superdangbo/category_869

    2024年02月08日
    瀏覽(22)
  • Spring Cloud(Finchley版本)系列教程(二) 客戶端負(fù)載均衡Ribbon

    Spring Cloud(Finchley版本)系列教程(二) 客戶端負(fù)載均衡Ribbon

    Spring Cloud(Finchley版本)系列教程(二) 客戶端負(fù)載均衡Ribbon 目前主流的負(fù)載均衡方案有兩種,一種是集中式均衡負(fù)載,在消費者與服務(wù)提供者之間使用獨立的代理方式進(jìn)行負(fù)載,比如F5、Nginx等。另一種則是客戶端自己做負(fù)載均衡,根據(jù)自己的請求做負(fù)載,Ribbon就屬于客戶端自己

    2024年02月09日
    瀏覽(47)
  • 4-Spring cloud之搭建Ribbon負(fù)載均衡——服務(wù)器上實操(下)

    4-Spring cloud之搭建Ribbon負(fù)載均衡——服務(wù)器上實操(下)

    我們在上篇文章的基礎(chǔ)上繼續(xù)Ribbon的負(fù)載均衡,為了更清晰,再放一次架構(gòu)圖,如下: 關(guān)于圖的更多解釋,請看Ribbon負(fù)載均衡上篇。 關(guān)于上篇請看下面文章,如下: 3-Spring cloud之搭建Ribbon負(fù)載均衡——服務(wù)器上實操(上). Ribbon負(fù)載均衡的規(guī)則都定義在IRule接口中,而IRule有

    2024年02月12日
    瀏覽(16)
  • 云原生微服務(wù) 第五章 Spring Cloud Netflix Eureka集成負(fù)載均衡組件Ribbon

    云原生微服務(wù) 第五章 Spring Cloud Netflix Eureka集成負(fù)載均衡組件Ribbon

    第一章 Java線程池技術(shù)應(yīng)用 第二章 CountDownLatch和Semaphone的應(yīng)用 第三章 Spring Cloud 簡介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon Spring Cloud Ribbon 是一套基于 Netflix Ribbon 實現(xiàn)的客戶端負(fù)載均衡和服務(wù)調(diào)用工具,其主要功能是提供客戶端的負(fù)載均衡算法和服務(wù)

    2024年02月08日
    瀏覽(86)
  • Spring Cloud Alibaba全家桶(三)——微服務(wù)負(fù)載均衡器Ribbon與LoadBalancer

    Spring Cloud Alibaba全家桶(三)——微服務(wù)負(fù)載均衡器Ribbon與LoadBalancer

    本文為 微服務(wù)負(fù)載均衡器Ribbon與LoadBalancer 相關(guān)知識,下邊將對 什么是Ribbon (包括: 客戶端的負(fù)載均衡 、 服務(wù)端的負(fù)載均衡 、 常見負(fù)載均衡算法 ), Nacos使用Ribbon , Ribbon內(nèi)核原理 (包括: Ribbon原理 , Ribbon負(fù)載均衡策略 , 饑餓加載 ), Spring Cloud LoadBalancer (包括:

    2024年02月02日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包