這篇文章主要講解了“Kafka的原理和作用是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Kafka的原理和作用是什么”吧!
創(chuàng)新互聯(lián)建站是少有的網(wǎng)站制作、網(wǎng)站建設(shè)、營(yíng)銷型企業(yè)網(wǎng)站、成都微信小程序、手機(jī)APP,開(kāi)發(fā)、制作、設(shè)計(jì)、賣鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,從2013年成立,堅(jiān)持透明化,價(jià)格低,無(wú)套路經(jīng)營(yíng)理念。讓網(wǎng)頁(yè)驚喜每一位訪客多年來(lái)深受用戶好評(píng)
Kafka 是主流的消息流系統(tǒng),其中的概念還是比較多的,下面通過(guò)圖示的方式來(lái)梳理一下 Kafka 的核心概念,以便在我們的頭腦中有一個(gè)清晰的認(rèn)識(shí)。
Kafka 是一套流處理系統(tǒng),可以讓后端服務(wù)輕松的相互溝通,是微服務(wù)架構(gòu)中常用的組件。
生產(chǎn)者服務(wù) Producer 向 Kafka 發(fā)送消息,消費(fèi)者服務(wù) Consumer 監(jiān)聽(tīng) Kafka 接收消息。
一個(gè)服務(wù)可以同時(shí)為生產(chǎn)者和消費(fèi)者。
Topic 是生產(chǎn)者發(fā)送消息的目標(biāo)地址,是消費(fèi)者的監(jiān)聽(tīng)目標(biāo)。
一個(gè)服務(wù)可以監(jiān)聽(tīng)、發(fā)送多個(gè) Topics。
Kafka 中有一個(gè)【consumer-group(消費(fèi)者組)】的概念。
這是一組服務(wù),扮演一個(gè)消費(fèi)者。
如果是消費(fèi)者組接收消息,Kafka 會(huì)把一條消息路由到組中的某一個(gè)服務(wù)。
這樣有助于消息的負(fù)載均衡,也方便擴(kuò)展消費(fèi)者。
Topic 扮演一個(gè)消息的隊(duì)列。
首先,一條消息發(fā)送了。
然后,這條消息被記錄和存儲(chǔ)在這個(gè)隊(duì)列中,不允許被修改。
接下來(lái),消息會(huì)被發(fā)送給此 Topic 的消費(fèi)者。
但是,這條消息并不會(huì)被刪除,會(huì)繼續(xù)保留在隊(duì)列中。
繼續(xù)發(fā)送消息。
像之前一樣,這條消息會(huì)發(fā)送給消費(fèi)者、不允許被改動(dòng)、一直呆在隊(duì)列中。
(消息在隊(duì)列中能呆多久,可以修改 Kafka 的配置)
上面 Topic 的描述中,把 Topic 看做了一個(gè)隊(duì)列,實(shí)際上,一個(gè) Topic 是由多個(gè)隊(duì)列組成的,被稱為【Partition(分區(qū))】。
這樣可以便于 Topic 的擴(kuò)展。
生產(chǎn)者發(fā)送消息的時(shí)候,這條消息會(huì)被路由到此 Topic 中的某一個(gè) Partition。
消費(fèi)者監(jiān)聽(tīng)的是所有分區(qū)。
生產(chǎn)者發(fā)送消息時(shí),默認(rèn)是面向 Topic 的,由 Topic 決定放在哪個(gè) Partition,默認(rèn)使用輪詢策略。
也可以配置 Topic,讓同類型的消息都在同一個(gè) Partition。
例如,處理用戶消息,可以讓某一個(gè)用戶所有消息都在一個(gè) Partition。
例如,用戶1發(fā)送了3條消息:A、B、C,默認(rèn)情況下,這3條消息是在不同的 Partition 中(如 P1、P2、P3)。
在配置之后,可以確保用戶1的所有消息都發(fā)到同一個(gè)分區(qū)中(如 P1)。
這個(gè)功能有什么用呢?
這是為了提供消息的【有序性】。
消息在不同的 Partition 是不能保證有序的,只有一個(gè) Partition 內(nèi)的消息是有序的。
Kafka 是集群架構(gòu)的,ZooKeeper是重要組件。
ZooKeeper 管理者所有的 Topic 和 Partition。
Topic 和 Partition 存儲(chǔ)在 Node 物理節(jié)點(diǎn)中,ZooKeeper負(fù)責(zé)維護(hù)這些 Node。
例如,有2個(gè) Topic,各自有2個(gè) Partition。
這是邏輯上的形式,但在 Kafka 集群中的實(shí)際存儲(chǔ)可能是這樣的:
Topic A 的 Partition #1 有3份,分布在各個(gè) Node 上。
這樣可以增加 Kafka 的可靠性和系統(tǒng)彈性。
3個(gè) Partition #1 中,ZooKeeper 會(huì)指定一個(gè) Leader,負(fù)責(zé)接收生產(chǎn)者發(fā)來(lái)的消息。
其他2個(gè) Partition #1 會(huì)作為 Follower,Leader 接收到的消息會(huì)復(fù)制給 Follower。
這樣,每個(gè) Partition 都含有了全量消息數(shù)據(jù)。
即使某個(gè) Node 節(jié)點(diǎn)出現(xiàn)了故障,也不用擔(dān)心消息的損壞。
Topic A 和 Topic B 的所有 Partition 分布可能就是這樣的:
感謝各位的閱讀,以上就是“Kafka的原理和作用是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Kafka的原理和作用是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
網(wǎng)頁(yè)題目:Kafka的原理和作用是什么
標(biāo)題網(wǎng)址:http://muchs.cn/article18/ghihdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、網(wǎng)站收錄、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)