偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

帶你認(rèn)識(shí)Pulsar負(fù)載均衡利器Bundle

開發(fā) 開發(fā)工具
Pulsar是一款非常優(yōu)秀的消息流平臺(tái),這篇文章主要講Pulsar中Topic通過Bundle這個(gè)負(fù)載均衡利器在Broker中的分配。

[[423797]]

Pulsar是一款非常優(yōu)秀的消息流平臺(tái),這篇文章主要講Pulsar中Topic通過Bundle這個(gè)負(fù)載均衡利器在Broker中的分配。

1 Topic層級(jí)概念

首先看一下Pulsar的架構(gòu)圖,如下圖:

Pulsar的Broker可以管理一個(gè)或者多個(gè)Topic。Pulsar是一個(gè)多租戶平臺(tái),多租戶的特性體現(xiàn)在Topic是一個(gè)層級(jí)概念,Topic的URL如下圖:

一個(gè)Topic可以使用persistent屬性指定是否持久化,而Topic的上層使用租戶來進(jìn)行權(quán)限隔離,使用Namespace來進(jìn)行策略管理。

Topic的層級(jí)概念也可以用下圖來表示:

在一個(gè)公司內(nèi)部的Pulsar集群中,可以根據(jù)業(yè)務(wù)部門建租戶,根據(jù)業(yè)務(wù)部門內(nèi)部的不同項(xiàng)目組來劃分Namespace,根據(jù)每個(gè)項(xiàng)目組的不同業(yè)務(wù)單元來劃分Topic。

2 Namespace Bundles

Pulsar把Namespace拆成了Bundle,Bundle是namespace的子集。如下圖一個(gè)Namespace下面有6個(gè)Topic:

我們把這個(gè)Namespace劃分成四個(gè)hash區(qū)域,從0x00000000~0xffffffff,之后把6個(gè)Topic按照名字(上面URL圖中的最后一部分)做Hash運(yùn)算,分配到這四個(gè)區(qū)域內(nèi),如下圖:

上圖中,Topic0做Hash運(yùn)算后值落在了0xc0000000~0xffffffff這個(gè)區(qū)域,其他幾個(gè)Topic也分別落到了自己的Hash區(qū)域。

為什么要為Namespace劃分Bundle子集呢?因?yàn)镻ulsar有自動(dòng)負(fù)載均衡機(jī)制,會(huì)把繁忙的Broker里面的一些Topic遷移到比較空閑的Broker中,實(shí)現(xiàn)Broker直接的流量均衡。這個(gè)搬移如果直接搬移Namespace,會(huì)太重,比如上面的圖需要一下子搬移6個(gè)Topic。如果以Topic為單位,每次搬移數(shù)據(jù)就會(huì)太小,而且搬移過程中需要保存大量Topic和Broker之間的元數(shù)據(jù)。有了Bundle后,以Bundle為單位進(jìn)行遷移,遷移Topic會(huì)容易很多,比如上圖中,一次遷移一個(gè)Bundle,有的包含一個(gè)Topic,有的包含兩個(gè)Topic。

3 Broker分配Bundle

Broker集群?jiǎn)?dòng)過程中會(huì)在Zookeeper競(jìng)爭(zhēng)創(chuàng)建臨時(shí)節(jié)點(diǎn),創(chuàng)建成功的成為L(zhǎng)eader節(jié)點(diǎn),叫Load Manager,這個(gè)節(jié)點(diǎn)會(huì)定期搜集其他Broker的服務(wù)狀態(tài),比如CPU、內(nèi)存、網(wǎng)卡帶寬利用率,這些指標(biāo)都是臨時(shí)數(shù)據(jù),所以Leader節(jié)點(diǎn)并不會(huì)保存太多數(shù)據(jù)。

Leader節(jié)點(diǎn)會(huì)根據(jù)搜集到的負(fù)載情況為其他Broker節(jié)點(diǎn)分配Bundle。如下圖:

上圖中Broker1競(jìng)爭(zhēng)成為L(zhǎng)eader,它負(fù)責(zé)為其他幾個(gè)Broker分配Bundle。初始化時(shí),每個(gè)Broker都沒有Boundle,Leader把topic0分配給了Broker3,這就代表topic0所在的Bundle分配給了Broker3,之后Hash值跟topic0相同的都會(huì)落到這個(gè)Bundle。然后把topic1分配給了Broker2,這就代表topic1所在的Bundle分配給了Broker2。類似把其他2個(gè)Bundle分別分配給了Broker0和Broker1。

4 高可用

還是以上面的圖為例,如果Broker0宕機(jī)了,Load Manager和ZK都能檢測(cè)到broker0宕機(jī),這時(shí)Load Manager會(huì)重新把Bundle(0x00000000~0x400000000)分配給其他三個(gè)broker,最后選擇哪個(gè)broker取決于Load Manager收集到的每個(gè)broker的負(fù)載情況,會(huì)找一個(gè)負(fù)載最小的broker分配。如下圖:

如果Broker1宕機(jī)了,也就是Leader節(jié)點(diǎn)宕機(jī)了,那Broker0、Broker1和Broker2三個(gè)節(jié)點(diǎn)會(huì)去Zookeeper搶占注冊(cè)零時(shí)節(jié)點(diǎn),注冊(cè)成功的成為新的Leader,新的Leader節(jié)點(diǎn)會(huì)把Broker1的Bundle分配給剩下的3個(gè)Broker。

5 客戶端

Topic通過Bundle綁定了Broker之后,客戶端就可以跟自己要訪問的Broker建立長(zhǎng)鏈接,如下圖:

這里需要注意:圖中的第1、2兩步既可以用HTTP的方式,也可以用TCP的方式,但是第3步也就是Broker跟client建立連接只能用TCP。

Pulsar為客戶端提供了代理,客戶端可以直接跟代理通信,如下圖:

6 總結(jié)

 

使用了Bundle,Pulsar可以方便地通過Load Manager節(jié)點(diǎn)做負(fù)載均衡,不用考慮一次搬移的Topic太多,也不用擔(dān)心一次搬移一個(gè)Topic而需要保存太多元數(shù)據(jù)。

 

責(zé)任編輯:武曉燕 來源: 程序員jinjunzhu
相關(guān)推薦

2010-05-05 18:51:25

Varnish負(fù)載均衡

2010-05-04 18:10:07

路由器負(fù)載均衡

2010-04-23 00:03:18

全局負(fù)載均衡

2010-05-06 12:56:13

全局負(fù)載均衡

2010-04-26 15:25:40

2023-02-07 06:42:24

Pulsar負(fù)載均衡

2010-04-20 10:46:59

什么是負(fù)載均衡器

2021-05-07 17:11:19

負(fù)載均衡運(yùn)維服務(wù)

2010-04-28 16:18:19

負(fù)載均衡技術(shù)

2010-04-21 16:21:39

2010-05-10 16:46:23

負(fù)載均衡交換機(jī)

2020-12-14 10:15:03

負(fù)載均衡器Linux服務(wù)器

2023-11-09 07:58:50

2017-07-03 08:08:25

負(fù)載均衡分類

2010-09-29 15:15:15

DHCP中繼

2010-05-06 11:02:52

網(wǎng)絡(luò)負(fù)載均衡

2010-04-27 12:42:45

LVS負(fù)載均衡

2024-07-16 08:09:32

載均衡技術(shù)Pulsar分布式系統(tǒng)

2019-03-18 10:44:41

負(fù)載均衡DNSUDP

2020-02-04 15:00:25

大白話認(rèn)識(shí)JVM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)