最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Kafka 消費(fèi)者組

2022-08-12 13:54 作者:限量版范兒  | 我要投稿

Kafka 消費(fèi)者組

Consumer Group 是kafka 當(dāng)中比較有亮點(diǎn)的設(shè)計(jì)了。

1. 消費(fèi)者組的特點(diǎn):



一個(gè)分區(qū)只可以被消費(fèi)組中的一個(gè)消費(fèi)者所消費(fèi)。

一個(gè)消費(fèi)組中的一個(gè)消費(fèi)者可以消費(fèi)多個(gè)分區(qū),例如?C1?消費(fèi)了?P0, P3。

一個(gè)消費(fèi)組中的不同消費(fèi)者消費(fèi)的分區(qū)一定不會(huì)重復(fù),例如:

  • C1 -> P0、P3

  • C2 -> P1、P2


所有消費(fèi)者一起消費(fèi)所有的分區(qū),例如?C1?和?C2?共同完成了對?P0、P1、P2、P3?的消費(fèi)。

在不同消費(fèi)組中,每個(gè)消費(fèi)組都會(huì)消費(fèi)所有的分區(qū),例如,消費(fèi)組A、消費(fèi)組B 都消費(fèi)了?P0、P1、P2、P3。

同一個(gè)消費(fèi)組里面的消費(fèi)者對分區(qū)是互斥的,例如?C1 和 C2?不會(huì)消費(fèi)同一個(gè)分區(qū);而分區(qū)在不同的消費(fèi)組間是共享的。

2. 消費(fèi)者組的優(yōu)勢

  • 高性能



假設(shè)一個(gè)主題有10個(gè)分區(qū),如果沒有消費(fèi)者組,只有一個(gè)消費(fèi)者對這10個(gè)分區(qū)消費(fèi),他的壓力肯定大。



如果有了消費(fèi)者組,組內(nèi)的成員就可以分擔(dān)這10個(gè)分區(qū)的壓力,提高消費(fèi)性能。

  • 消費(fèi)模式靈活

假設(shè)有4個(gè)消費(fèi)者訂閱一個(gè)主題,不同的組合方式就可以形成不同的消費(fèi)模式。



只使用一個(gè)消費(fèi)者組,把4個(gè)消費(fèi)者都放在一起,利用分區(qū)在組內(nèi)成員間互斥的特性,就實(shí)現(xiàn)了單播(隊(duì)列)模式。

  • 故障容災(zāi)

如果只有一個(gè)消費(fèi)者,出現(xiàn)故障后就比較麻煩了,但有了消費(fèi)者組之后就方便多了。

消費(fèi)組會(huì)對其成員進(jìn)行管理,在有消費(fèi)者加入或者退出后,消費(fèi)者成員列表發(fā)生變化,消費(fèi)組就會(huì)執(zhí)行再平衡的操作。

例如一個(gè)消費(fèi)者宕機(jī)后,之前分配給他的分區(qū)會(huì)重新分配給其他的消費(fèi)者,實(shí)現(xiàn)消費(fèi)者的故障容錯(cuò)。

消費(fèi)者組的好處:

  • 消費(fèi)效率更高

  • 消費(fèi)模式靈活

  • 便于故障容災(zāi)

Consumer Group 是 Kafka 提供的可擴(kuò)展且具有容錯(cuò)性的消費(fèi)者機(jī)制。

  • Consumer Group 下可以有一個(gè)或多個(gè) Consumer 實(shí)例。

  • Group ID 是一個(gè)字符串,在一個(gè) Kafka 集群中,它標(biāo)識(shí)唯一的一個(gè) Consumer Group。

  • Consumer Group 下所有實(shí)例訂閱的主題的單個(gè)分區(qū),只能分配給組內(nèi)的某個(gè) Consumer 實(shí)例消費(fèi)。這個(gè)分區(qū)當(dāng)然也可以被其他的 Group 消費(fèi)。

一般的消息隊(duì)列模型

  1. 傳統(tǒng)點(diǎn)對點(diǎn)模型是消息一旦被消費(fèi),就會(huì)從隊(duì)列中被刪除,而且只能被下游的一個(gè) Consumer 消費(fèi)。這既是特性,也是一種伸縮性比較差的缺陷。

  2. 傳統(tǒng)發(fā)布/訂閱模型允許消息被多個(gè) Consumer 消費(fèi),但它的問題也是伸縮性不高,因?yàn)槊總€(gè)訂閱者都必須要訂閱消費(fèi)主題的所有分區(qū)。

Kafka的消費(fèi)者組解決的問題

Kafka使用 Consumer Group 這一種機(jī)制,可以實(shí)現(xiàn)了傳統(tǒng)消息引擎系統(tǒng)的兩大模型。如果所有實(shí)例都屬于同一個(gè) Group,那么它實(shí)現(xiàn)的就是消息隊(duì)列模型;如果所有實(shí)例分別屬于不同的 Group,那么它實(shí)現(xiàn)的就是發(fā)布 / 訂閱模型。

除此以外,因?yàn)橥瑐€(gè)消費(fèi)組多個(gè)消費(fèi)者實(shí)例共同分擔(dān)消費(fèi)各個(gè)Topic分區(qū),也就提高了伸縮性。

理想情況下,Consumer 實(shí)例的數(shù)量應(yīng)該等于該 Group 訂閱主題的分區(qū)總數(shù),這樣每個(gè)Consumer實(shí)例理想情況都會(huì)分擔(dān)一個(gè)分區(qū)都消費(fèi)任務(wù),也不會(huì)造成資源浪費(fèi)(犧牲可用性)。

Kafka消費(fèi)位移

針對 Consumer Group,Kafka 是怎么管理位移的呢?

消費(fèi)者在消費(fèi)的過程中需要記錄自己消費(fèi)了多少數(shù)據(jù),即消費(fèi)位置信息。在 Kafka 中,這個(gè)位置信息有個(gè)專門的術(shù)語:位移(Offset)

新老版本差異:

  • 老版本的 Consumer Group 把位移保存在 ZooKeeper 中。將位移保存在 ZooKeeper 外部系統(tǒng)的做法,最顯而易見的好處就是減少了 Kafka Broker 端的狀態(tài)保存開銷。缺點(diǎn):ZooKeeper 這類元框架其實(shí)并不適合進(jìn)行頻繁的寫更新,而 Consumer Group 的位移更新卻是一個(gè)非常頻繁的操作。這種大吞吐量的寫操作會(huì)極大地拖慢 ZooKeeper 集群的性能。

  • 新版本的 Consumer Group 中,Kafka 社區(qū)重新設(shè)計(jì)了 Consumer Group 的位移管理方式,采用了將位移保存在 Kafka 內(nèi)部主題的方法。這個(gè)內(nèi)部主題就是讓人既愛又恨的?__consumer_offsets。

  • 鏈接:https://www.dianjilingqu.com/480791.html


Kafka 消費(fèi)者組的評論 (共 條)

分享到微博請遵守國家法律
鹿泉市| 浦县| 庄浪县| 丰都县| 天水市| 稷山县| 鄂托克前旗| 龙口市| 庄河市| 彩票| 汉中市| 蓝田县| 黎平县| 工布江达县| 白水县| 靖西县| 龙南县| 太仆寺旗| 玉树县| 西林县| 怀宁县| 布尔津县| 手机| 博白县| 清水县| 房山区| 遂宁市| 旌德县| 山丹县| 湾仔区| 武穴市| 石景山区| 梧州市| 通江县| 漳平市| 大化| 靖安县| 尼玛县| 台安县| 桐柏县| 晋宁县|