日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Kafka分區(qū)副本與RocketMQ隊(duì)列的不同

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

RocketMQ 隊(duì)列

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

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

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

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

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

Kafka分區(qū)與副本

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

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

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

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

--partitions 4 --replication-factor 2

以上參數(shù)為該主題創(chuàng)建了 4 個(gè)分區(qū),副本因子為 2,我現(xiàn)在有個(gè)集群,有 3 個(gè) 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

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

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

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


網(wǎng)頁(yè)名稱:Kafka分區(qū)副本與RocketMQ隊(duì)列的不同
文章分享:http://www.5511xx.com/article/dpocecp.html