av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Kafka分區(qū)副本與RocketMQ隊列的不同

最近在學(xué)習(xí) Kafka,發(fā)現(xiàn)其核心概念與 RocketMQ 還是存在一定的差別,下面我來說下 Kafka 分區(qū) 與 RocketMQ隊列之間的區(qū)別。

RocketMQ 隊列

RocketMQ 每個主題都會有若干個隊列,分布于集群中各個 broker 上,分布規(guī)律如下:

隊列會在 broker 中抽象成一個 consumer queue,在集群模式下,每個隊列每個消費組只能存在一個消費者進行訂閱消費,但是一個消費者可以消費多個隊列,這也保證了在集群模式下消息不會被重復(fù)消費,如下圖所示:

在RocketMQ開源版本中,在創(chuàng)建主題時,通過集群創(chuàng)建模式,指定主題在集群中的隊列數(shù)量,比如集群中有 2 個 broker,我們創(chuàng)建主題時選擇隊列數(shù)量為 4,就會在每個 broker 中為該主題創(chuàng)建 4 個 隊列,那么該主題在集群中就會有 4 * 2 個隊列數(shù)量,這里有個不好的地方就是無法精確控制隊列數(shù)量,但這個問題不大。

RocketMQ 是通過主從模式實現(xiàn)消息的冗余,在生產(chǎn)環(huán)境中,也會采取多 Master 多 Slave 模式搭建集群,主從之間的隊列數(shù)據(jù)同步有同步復(fù)制和異步復(fù)制兩種。

因此,RocketMQ 是依靠隊列進行消費的,而隊列數(shù)據(jù)通過主從同步實現(xiàn)消息的冗余。

Kafka分區(qū)與副本

Kafka 的分區(qū)概念是其核心概念之一,分區(qū)機制使得 Kafka 具備了水平擴展的能力,在其分區(qū)之上,Kafka 還可以設(shè)置分區(qū)的副本,大大提高了 Kafka 消息的可靠性。

在 Kafka 中,一個主題在集群中會擁有一個以上分區(qū),每個分區(qū)在每個消費集群中只能有一個消費者進行訂閱消費,,但是一個消費者可以消費多個隊列,與 RocketMQ 隊列一樣:

我們可以通過調(diào)整主題的分區(qū)數(shù)量提高消息的吞吐量,還可以為分區(qū)設(shè)置副本因子,即該分區(qū)在集群中擁有多少個副本(replica),副本分為 leader replica 與 follower replica,它們之間通過 ISR(in-sync replica)與 leader replica 保持?jǐn)?shù)據(jù)同步。

在創(chuàng)建主題topic-demo時,可以指定主題在集群中的分區(qū)數(shù)量,以及副本因子大?。?/p>

--partitions 4 --replication-factor 2

以上參數(shù)為該主題創(chuàng)建了 4 個分區(qū),副本因子為 2,我現(xiàn)在有個集群,有 3 個 broker:

nodel brokerid=O
node2 brokerid=l
node3 brokerid=2

根據(jù) Kafka 的默認(rèn)分配:

node1: topic-demo-0、topic-demo-1
node2: topic-demo-1、topic-demo-2、topic-demo-3
node3: topic-demo-0、topic-demo-2、topic-demo-3

有沒有發(fā)現(xiàn),每個分區(qū)都分配了一個副本,而且分區(qū)的分布盡量均衡,分區(qū)副本盡量不在同一個節(jié)點上,如果我們設(shè)置副本因子為 3,原理一樣。

不同于 RocketMQ 隊列,Kafka 的分區(qū)可以在集群中精確設(shè)置多少個,然后隨機均衡地分布在集群上,還可以自由定義副本的多少,而 RocketMQ 的 Master-Slave 模式看起來僅有一份副本,當(dāng)然為了節(jié)省存儲空間以及提高性能,一般副本因子設(shè)置 2 也就夠了。

相對比 RocketMQ 的隊列與主從同步機制,Kafka 的分區(qū)與副本機制顯得更加靈活,而且也更加合理。


文章標(biāo)題:Kafka分區(qū)副本與RocketMQ隊列的不同
文章分享:http://uogjgqi.cn/article/dpocecp.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流