前言
kafka是一款A(yù)pache組織下的一款開源流處理平臺(tái)。由Scala開發(fā)語(yǔ)言編寫實(shí)現(xiàn)。
流平臺(tái)具有三個(gè)關(guān)鍵功能:
發(fā)布和訂閱記錄流,類似于消息隊(duì)列或企業(yè)消息傳遞系統(tǒng)。
以容錯(cuò)的持久方式存儲(chǔ)記錄流。
處理記錄流。
kafka的主要應(yīng)用場(chǎng)景:
建立實(shí)時(shí)流數(shù)據(jù)管道,在系統(tǒng)之間進(jìn)行數(shù)據(jù)傳輸。
構(gòu)建實(shí)時(shí)流應(yīng)用程序以轉(zhuǎn)換或響應(yīng)數(shù)據(jù)流。
kafka的幾個(gè)核心概念,理解這幾個(gè)概念對(duì)kafka的正確使用十分重要。
**1.topic**? ? 消息主題,無(wú)論是發(fā)布還是消費(fèi)都是以topic為單位,一般一個(gè)topic對(duì)應(yīng)一種業(yè)務(wù)場(chǎng)景**2.partition**? 分區(qū),一個(gè)主題可以對(duì)應(yīng)1~N個(gè)分區(qū),kafka可以保證單個(gè)分區(qū)的消息的FIFO,而不能保證整個(gè)topic消息的FIFO(除非該topic只有一個(gè)partition)。kafka的高吞吐的原理也是主要通過增加分區(qū)實(shí)現(xiàn)的。
3. broker
一個(gè)broker表示一臺(tái)服務(wù)器,一個(gè)broker可以包含多個(gè)主題的多個(gè)分區(qū)。多個(gè)broker可以構(gòu)成kafka集群。每個(gè)broker有一個(gè)唯一的id。關(guān)于分區(qū)在broker上的分配策略后面會(huì)講到。
4. producer
生產(chǎn)者,負(fù)責(zé)往指定的topic推送消息的角色。
5. consumer
消費(fèi)者,負(fù)責(zé)從指定topic消費(fèi)消息的角色。
6. consumer group
消費(fèi)組,一個(gè)消費(fèi)組可以包含多個(gè)消費(fèi)者,一個(gè)分區(qū)只能同時(shí)給同一個(gè)消費(fèi)組內(nèi)的一個(gè)消費(fèi)者消費(fèi)(這里要注意,如果是多個(gè)消費(fèi)組同時(shí)消費(fèi)一個(gè)分區(qū)是允許的,而且各自的消費(fèi)偏移量互不干擾)。**7.replication**? ? 副本集,副本分首領(lǐng)(leader)副本和跟隨(follower)副本, 分區(qū)至少有一個(gè)leader副本,0~N個(gè)follower副本,producer和consumer負(fù)責(zé)跟leader副本交互,follower只負(fù)責(zé)同步leader的數(shù)據(jù),以防在leader掛掉的時(shí)候,選舉一個(gè)follower當(dāng)選新的leader從而實(shí)現(xiàn)高可用。
8.offset
偏移量,標(biāo)識(shí)一個(gè)消費(fèi)者在分區(qū)中消費(fèi)到了哪個(gè)位置,消費(fèi)者每次消費(fèi)消息的時(shí)候都會(huì)帶上offset,消費(fèi)完可以自動(dòng)提交當(dāng)
最后
覺得此文不錯(cuò)的大佬們可以多多關(guān)注或者幫忙轉(zhuǎn)發(fā)分享一下哦,感謝!!!!