日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

深入剖析Netflix Ribbon:分布式微服務(wù)架構(gòu)的負(fù)載均衡神器

來源: 責(zé)編: 時(shí)間:2023-11-01 09:18:55 253觀看
導(dǎo)讀作者 | 波哥審校 | 重樓在現(xiàn)代分布式微服務(wù)架構(gòu)中,負(fù)載均衡是保證系統(tǒng)高可用、高性能的關(guān)鍵組件之一。Netflix Ribbon作為Netflix開源的負(fù)載均衡庫,為微服務(wù)架構(gòu)提供了強(qiáng)大的負(fù)載均衡能力,極大地促進(jìn)了微服務(wù)間的通信和

作者 | 波哥Y0C28資訊網(wǎng)——每日最新資訊28at.com

審校 | 重樓Y0C28資訊網(wǎng)——每日最新資訊28at.com

在現(xiàn)代分布式微服務(wù)架構(gòu)中,負(fù)載均衡是保證系統(tǒng)高可用、高性能的關(guān)鍵組件之一。Netflix Ribbon作為Netflix開源的負(fù)載均衡庫,為微服務(wù)架構(gòu)提供了強(qiáng)大的負(fù)載均衡能力,極大地促進(jìn)了微服務(wù)間的通信和協(xié)作。本篇筆者將深入剖析Netflix Ribbon的底層實(shí)現(xiàn)原理,帶您揭開其神秘面紗。Y0C28資訊網(wǎng)——每日最新資訊28at.com

Netflix Ribbon是Netflix開源的負(fù)載均衡庫,它可以無縫集成到微服務(wù)架構(gòu)中,提供了多種負(fù)載均衡策略和豐富的配置選項(xiàng),幫助開發(fā)者實(shí)現(xiàn)高性能、高可用的服務(wù)調(diào)用。先來看下Ribbond 架構(gòu):Y0C28資訊網(wǎng)——每日最新資訊28at.com

1.Ribbon的架構(gòu)

Ribbon的架構(gòu)主要由以下幾個(gè)核心組件構(gòu)成:Y0C28資訊網(wǎng)——每日最新資訊28at.com

  • IClientConfig:配置接口,用于獲取配置信息,如連接超時(shí)、讀取超時(shí)等。
  • IRule:負(fù)載均衡規(guī)則接口,用于決定請(qǐng)求應(yīng)該轉(zhuǎn)發(fā)到哪個(gè)服務(wù)實(shí)例。

Y0C28資訊網(wǎng)——每日最新資訊28at.com

其中Y0C28資訊網(wǎng)——每日最新資訊28at.com

  • choose(Object key): 從所有服務(wù)實(shí)例中選擇一個(gè),根據(jù)具體的負(fù)載均衡規(guī)則,返回選定的服務(wù)實(shí)例。
  • setLoadBalancer(ILoadBalancer lb): 設(shè)置與負(fù)載均衡規(guī)則相關(guān)的負(fù)載均衡器。
  • getLoadBalancer(): 獲取與負(fù)載均衡規(guī)則相關(guān)聯(lián)的負(fù)載均衡器。

IRule 接口提供了選擇服務(wù)實(shí)例的方法,具體選擇哪個(gè)服務(wù)實(shí)例取決于實(shí)現(xiàn)該接口的負(fù)載均衡規(guī)則。這個(gè)規(guī)則可以是輪詢、隨機(jī)、加權(quán)輪詢等不同的策略。使用示例如下:Y0C28資訊網(wǎng)——每日最新資訊28at.com

Y0C28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然我們一般使用是和Spring/SpringBoot整合使用,只需要在配置中加以配置即可。如果想實(shí)現(xiàn)自己的選擇機(jī)制,則只需要實(shí)現(xiàn)IRule,并完成使用配置即可。Y0C28資訊網(wǎng)——每日最新資訊28at.com

  • IPing:用于檢測(cè)服務(wù)實(shí)例的存活狀態(tài)。

主要有兩種實(shí)現(xiàn)方式:PingUrl 和 PingConstant
Y0C28資訊網(wǎng)——每日最新資訊28at.com

PingUrl 實(shí)現(xiàn)通過向服務(wù)實(shí)例發(fā)送HTTP請(qǐng)求來檢查其健康狀態(tài)。默認(rèn)情況下,它會(huì)向服務(wù)實(shí)例的 / 路徑發(fā)送 GET 請(qǐng)求來檢查服務(wù)實(shí)例是否存活。Y0C28資訊網(wǎng)——每日最新資訊28at.com

Y0C28資訊網(wǎng)——每日最新資訊28at.com

PingConstant 實(shí)現(xiàn)則更簡(jiǎn)單粗暴,無論什么情況下都返回 true,表示服務(wù)實(shí)例一直存活Y0C28資訊網(wǎng)——每日最新資訊28at.com

Y0C28資訊網(wǎng)——每日最新資訊28at.com

  • ServerList:用于獲取所有可用的服務(wù)實(shí)例列表。

接口有兩個(gè)方法:Y0C28資訊網(wǎng)——每日最新資訊28at.com

  1. getInitialListOfServers(): 用于獲取初始化時(shí)所有可用的服務(wù)實(shí)例列表。
  2. getUpdatedListOfServers(): 用于獲取更新后的所有服務(wù)實(shí)例列表,包括動(dòng)態(tài)刷新的列表。

ServerList 接口的實(shí)現(xiàn)是由具體的服務(wù)發(fā)現(xiàn)組件完成的。在 Netflix Ribbon 中,常用的服務(wù)發(fā)現(xiàn)組件是 Netflix Eureka,它可以通過 Eureka Server 獲取服務(wù)實(shí)例信息Y0C28資訊網(wǎng)——每日最新資訊28at.com

例如,Netflix Ribbon 提供了 DiscoveryEnabledNIWSServerList,它是通過 Eureka 獲取服務(wù)實(shí)例的一個(gè)實(shí)現(xiàn)類。這個(gè)實(shí)現(xiàn)類會(huì)調(diào)用 Eureka Client 獲取服務(wù)實(shí)例的信息,然后將服務(wù)實(shí)例封裝成 Ribbon 的 Server 對(duì)象。Y0C28資訊網(wǎng)——每日最新資訊28at.com

  • ServerListFilter:用于對(duì)服務(wù)實(shí)例列表進(jìn)行過濾,以適應(yīng)特定需求。

它只有getFilteredListOfServers這個(gè)方法,用于過濾服務(wù)實(shí)例列表,返回過濾后的服務(wù)實(shí)例列表。Y0C28資訊網(wǎng)——每日最新資訊28at.com

ServerListFilter允許我們自定義過濾規(guī)則,以決定負(fù)載均衡器最終選擇的服務(wù)實(shí)例。我們可以根據(jù)自己的需求實(shí)現(xiàn)這個(gè)接口,定義自己的過濾規(guī)則。這個(gè)過程可以包括排除一些不符合條件的服務(wù)實(shí)例,或者根據(jù)特定標(biāo)準(zhǔn)重新排序服務(wù)實(shí)例列表等。Y0C28資訊網(wǎng)——每日最新資訊28at.com

Netflix Ribbon 中,有一些內(nèi)置的過濾器,例如 ZonePreferenceServerListFilter、ZoneAffinityServerListFilter 等。這些過濾器基于服務(wù)實(shí)例所在的區(qū)域(Zone)來進(jìn)行服務(wù)實(shí)例的過濾和排序,例如:Y0C28資訊網(wǎng)——每日最新資訊28at.com

Y0C28資訊網(wǎng)——每日最新資訊28at.com

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

下面詳細(xì)介紹下Ribbon的負(fù)載均衡流程:Y0C28資訊網(wǎng)——每日最新資訊28at.com

  • 獲取服務(wù)實(shí)例列表:Ribbon通過ServerList獲取可用的服務(wù)實(shí)例列表。
  • 過濾服務(wù)實(shí)例:Ribbon會(huì)通過ServerListFilter對(duì)服務(wù)實(shí)例列表進(jìn)行過濾,可能會(huì)過濾掉一些不符合特定條件的實(shí)例。
  • 選擇負(fù)載均衡策略:根據(jù)IRule選擇合適的負(fù)載均衡策略,如輪詢、隨機(jī)、加權(quán)輪詢等。這里的IRule可以是我們自己實(shí)現(xiàn)的規(guī)則。
  • 選擇目標(biāo)服務(wù)實(shí)例:根據(jù)負(fù)載均衡策略,選擇一個(gè)目標(biāo)服務(wù)實(shí)例。
  • 執(zhí)行請(qǐng)求:將請(qǐng)求發(fā)送到選擇的服務(wù)實(shí)例上。

3. Ribbon具體使用

接下來,我們?cè)敿?xì)說明下如何在項(xiàng)目中使用RibbonY0C28資訊網(wǎng)——每日最新資訊28at.com

  • 首先,我們需要在Spring配置文件中初始化Ribbon(當(dāng)然maven的配置各位老鐵就自己去配置了)

Y0C28資訊網(wǎng)——每日最新資訊28at.com

在上述配置中,我們通過ribbonRule指定了負(fù)載均衡規(guī)則,這里使用了AvailabilityFilteringRule,它會(huì)根據(jù)服務(wù)實(shí)例的狀態(tài)來判斷是否選擇該實(shí)例。而ribbonPing則用于設(shè)置服務(wù)實(shí)例的健康檢查策略。Y0C28資訊網(wǎng)——每日最新資訊28at.com

  • 發(fā)起服務(wù)調(diào)用

接下來,我們通過RestTemplate來發(fā)起服務(wù)調(diào)用:Y0C28資訊網(wǎng)——每日最新資訊28at.com

Y0C28資訊網(wǎng)——每日最新資訊28at.com

在這段代碼中,我們通過RestTemplate發(fā)起了對(duì)名為SERVICE-PROVIDER的服務(wù)的調(diào)用。Y0C28資訊網(wǎng)——每日最新資訊28at.com

  • 實(shí)現(xiàn)負(fù)載均衡

通過上述配置和代碼,Ribbon將會(huì)根據(jù)我們指定的負(fù)載均衡規(guī)則和健康檢查策略來選擇合適的服務(wù)實(shí)例,從而實(shí)現(xiàn)負(fù)載均衡。Y0C28資訊網(wǎng)——每日最新資訊28at.com

本篇對(duì)Netflix Ribbon的底層實(shí)現(xiàn)原理進(jìn)行了簡(jiǎn)要介紹,涵蓋了其核心組件、架構(gòu)、負(fù)載均衡流程以及實(shí)現(xiàn)原理的基本概念。深入理解Netflix Ribbon對(duì)于構(gòu)建高性能、高可用的微服務(wù)架構(gòu)至關(guān)重要,希望能對(duì)您有所幫助。Y0C28資訊網(wǎng)——每日最新資訊28at.com

作者介紹

波哥,互聯(lián)行業(yè)從業(yè)10余年,先后擔(dān)任項(xiàng)目總監(jiān)及架構(gòu)師。目前專攻技術(shù),喜歡研究技術(shù)原理。技術(shù)全面,主攻Java,精通JVM底層機(jī)制及Spring全家桶底層框架原理,熟練掌握當(dāng)前主流的中間件、服務(wù)網(wǎng)格等技術(shù)原理。Y0C28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-16285-0.html深入剖析Netflix Ribbon:分布式微服務(wù)架構(gòu)的負(fù)載均衡神器

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Springboot中如何自定義Web容器的運(yùn)行參數(shù)

下一篇: 掌握Spring事件監(jiān)聽器的內(nèi)部邏輯與實(shí)現(xiàn)

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 一加Ace2 Pro官宣:普及16G內(nèi)存 引領(lǐng)24G

    一加官方今天繼續(xù)為本月發(fā)布的新機(jī)一加Ace2 Pro帶來預(yù)熱,公布了內(nèi)存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領(lǐng),還有呢?#一加Ace2Pro#,2023 年 8 月,敬請(qǐng)期待。”同時(shí)
  • 盧偉冰長(zhǎng)文解析K60至尊版 對(duì)Redmi有著里程碑式的意義

    在今天的Redmi后性能時(shí)代戰(zhàn)略發(fā)布會(huì)結(jié)束之后,Redmi總經(jīng)理盧偉冰又帶來了一篇長(zhǎng)文,詳解了為什么 Redmi 要開啟后性能時(shí)代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對(duì)Reader和Writer接口的組合,
  • 不容錯(cuò)過的MSBuild技巧,必備用法詳解和實(shí)踐指南

    一、MSBuild簡(jiǎn)介MSBuild是一種基于XML的構(gòu)建引擎,用于在.NET Framework和.NET Core應(yīng)用程序中自動(dòng)化構(gòu)建過程。它是Visual Studio的構(gòu)建引擎,可在命令行或其他構(gòu)建工具中使用
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們?cè)谌粘9ぷ骱蜆I(yè)務(wù)中需要進(jìn)行各種審批流程時(shí),可能會(huì)面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動(dòng)處理這些審批流程可能會(huì)導(dǎo)致開發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • 共享單車的故事講到哪了?

    來源丨海克財(cái)經(jīng)與共享充電寶相差不多,共享單車已很久沒有被國(guó)內(nèi)熱點(diǎn)新聞關(guān)照到了。除了一再漲價(jià)和用戶直呼用不起了。近日多家媒體再發(fā)報(bào)道稱,成都、天津、鄭州等地多個(gè)共享單
  • 得物寵物生意「狂飆」,發(fā)力“它經(jīng)濟(jì)”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內(nèi)的“在線鑒別”,可找到鑒別寵物的選項(xiàng)。通過上傳自家寵物的部位細(xì)節(jié),就能收獲擁有專業(yè)資質(zhì)認(rèn)證的得物鑒
  • 引領(lǐng)旗艦級(jí)影像能力向中端機(jī)普及 OPPO K11 系列發(fā)布 1799 元起

    7月25日,OPPO正式發(fā)布K系列新品—— OPPO K11 。此次 K11 在中端手機(jī)市場(chǎng)長(zhǎng)期被忽視的影像板塊發(fā)力,突破性地搭載索尼 IMX890 旗艦大底主攝,支持 OIS
  • 三翼鳥智能家居亮相電博會(huì),讓用戶體驗(yàn)更真實(shí)

    2021電博會(huì)在青島國(guó)際會(huì)展中心開幕中,三翼鳥直接把“家”搬到了現(xiàn)場(chǎng),成為了展會(huì)的一大看點(diǎn)。這也是三翼鳥繼9月9日發(fā)布了行業(yè)首個(gè)一站式定制智慧家平臺(tái)后的
Top 主站蜘蛛池模板: 武汉市| 万全县| 南昌市| 娱乐| 平武县| 潮安县| 宜黄县| 天峨县| 两当县| 万山特区| 永年县| 丹东市| 岑溪市| 光泽县| 年辖:市辖区| 象州县| 遂昌县| 房山区| 师宗县| 谢通门县| 南川市| 卢湾区| 遵化市| 新泰市| 资阳市| 东乌珠穆沁旗| 乌兰浩特市| 昌江| 孙吴县| 龙州县| 吉首市| 专栏| 绥中县| 南开区| 苍南县| 芜湖县| 连平县| 四会市| 永德县| 普兰县| 镇远县|