Python知識分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
Kafka詳解及常見面試問題解析(值得珍藏) PDF 下載
發(fā)布于:2024-02-09 11:16:26
(假如點擊沒反應(yīng),多刷新兩次就OK!)

Kafka詳解及常見面試問題解析(值得珍藏) PDF 下載  圖1

 

 

資料內(nèi)容:

 

2. 架構(gòu)

 

Kafka 存儲的消息來自任意多被稱為 Producer 生產(chǎn)者的進(jìn)程。數(shù)據(jù)從而可以被發(fā)布到不同的 Topic 主題下
的不同 Partition 分區(qū)。在一個分區(qū)內(nèi),這些消息被索引并連同時間戳存儲在一起。其它被稱為 Consumer
消費者的進(jìn)程可以從分區(qū)訂閱消息。Kafka 運行在一個由一臺或多臺服務(wù)器組成的集群上,并且分區(qū)可以跨
集群結(jié)點分布。
下面給出 Kafka 一些重要概念,讓大家對 Kafka 有個整體的認(rèn)識和感知,后面還會詳細(xì)的解析每一個概念的
作用以及更深入的原理。
● Producer: 消息生產(chǎn)者,向 Kafka Broker 發(fā)消息的客戶端。
● Consumer: 消息消費者,從 Kafka Broker 取消息的客戶端。
● Consumer Group: 消費者組(CG),消費者組內(nèi)每個消費者負(fù)責(zé)消費不同分區(qū)的數(shù)據(jù),提高消費能
力。一個分區(qū)只能由組內(nèi)一個消費者消費,消費者組之間互不影響。所有的消費者都屬于某個消費者組,即
消費者組是邏輯上的一個訂閱者。
● Broker: 一臺 Kafka 機器就是一個 broker。一個集群由多個 broker 組成。一個 broker 可以容納多個
topic。
● Topic: 可以理解為一個隊列,topic 將消息分類,生產(chǎn)者和消費者面向的是同一個 topic。
● Partition: 為了實現(xiàn)擴展性,提高并發(fā)能力,一個非常大的 topic 可以分布到多個 broker (即服務(wù)器)
上,一個 topic 可以分為多個 partition,每個 partition 是一個 有序的隊列, 可以理解為將標(biāo)準(zhǔn) MQ 的
Queue 的消息進(jìn)行拆分, 來實現(xiàn)高可用
Producer 發(fā)送的 Message, 根據(jù) key 和 partition 數(shù)進(jìn)行 hash, 然后進(jìn)行投遞,一個分區(qū)只能被同一個
Consumer Group 中的一個 Consumer 消費. 分區(qū)內(nèi)消費有序 。
● Replica: 副本,為實現(xiàn)備份的功能,保證集群中的某個節(jié)點發(fā)生故障時,該節(jié)點上的 partition 數(shù)據(jù)不丟
失,且 Kafka 仍然能夠繼續(xù)工作,Kafka 提供了副本機制,一個 topic 的每個分區(qū)都有若干個副本,一個
leader 和若干個 follower。
● Leader: 每個分區(qū)多個副本的“主”副本,生產(chǎn)者發(fā)送數(shù)據(jù)的對象,以及消費者消費數(shù)據(jù)的對象,都是
leader。
 ● Follower: 每個分區(qū)多個副本的“從”副本,實時從 leader 中同步數(shù)據(jù),保持和 leader 數(shù)據(jù)的同步。
leader 發(fā)生故障時,某個 follower 還會成為新的 leader。
● offset: 消費者消費的位置信息,監(jiān)控數(shù)據(jù)消費到什么位置,當(dāng)消費者掛掉再重新恢復(fù)的時候,可以從消
費位置繼續(xù)消費。
● Zookeeper: Kafka 集群能夠正常工作,需要依賴于 zookeeper,zookeeper 幫助 Kafka 存儲和管理集
群信息。