kafka基礎(chǔ)知識總結(jié)

kafka是分布式流處理平臺,可以對流式記錄發(fā)布和訂閱、存儲、立即處理等。

基本概念

  1. producer:消息生產(chǎn)者
  2. consumer:消息消費(fèi)者
  3. consumer group:消費(fèi)者組,一個消費(fèi)者組包含一個或多個消費(fèi)者實(shí)例,便于擴(kuò)展和容錯。如果所有的消費(fèi)者在同一個消費(fèi)者組中,消息記錄會負(fù)載均衡到每一個消費(fèi)者實(shí)例;如果所有消費(fèi)者實(shí)例在不同的消費(fèi)組中,每條消息會廣播到所有消費(fèi)者進(jìn)程。
  4. broker :kafka服務(wù)器,kafka集群就是由多個broker組成。一個broker可以容納多個topic。
  5. topic:數(shù)據(jù)主題。kafka保留所有發(fā)布的記錄,無論是否被消費(fèi),數(shù)據(jù)保留期限可配置。kafka只保證分區(qū)內(nèi)記錄是有序的,不保證主題中不同分區(qū)的順序。
  6. partition:分區(qū)。一個topic可以分布在多個broker,一個topic可以分為多個partition,每個partition為一個隊列。便于擴(kuò)展。分區(qū)由一個leader和多個follower組成,生產(chǎn)者和消費(fèi)者操作的都是leader,follower負(fù)責(zé)同步leader,在leader發(fā)生為故障時,從中選舉出新的leader。一個partition只能被消費(fèi)者組的一個消費(fèi)者所消費(fèi),但是過個消費(fèi)組可以消費(fèi)同一個partition。
    kafka_broker.png

四大核心API

  1. producer api發(fā)布消息 到一個或多個topic
  2. consumer api訂閱一個或多個topic,并處理產(chǎn)生的消息
  3. streams api允許應(yīng)用程序充當(dāng)處理器,從一個或多個topic獲取輸入流,并向一個或多個topic產(chǎn)生輸出流。
  4. connector api允許構(gòu)建可重用的生產(chǎn)者或消費(fèi)者,將kafka topic連接到已存在的應(yīng)用程序或數(shù)據(jù)系統(tǒng)。比如連接到一個關(guān)系數(shù)據(jù)庫,捕捉表的所有變更。

kafka的作用

a. 數(shù)據(jù)緩沖,保證下游消費(fèi)數(shù)據(jù)速度穩(wěn)定;
b. 解耦和擴(kuò)展,消息隊列可以作為接口層,只要遵循規(guī)范,上下游可以隨意擴(kuò)展;
c. 冗余和健壯性,消息可以保存為多個副本,多個下游服務(wù)可以消費(fèi)同一信息;
d. 異步通信,消息消費(fèi)速度根據(jù)消費(fèi)者決定,下游服務(wù)可以在需要的時候再去處理它。

kafka 消息發(fā)送機(jī)制

producer將消息序列化后,經(jīng)過分區(qū)處理器處理,決定發(fā)到對應(yīng)topic的對應(yīng)分區(qū),最后將消息發(fā)送到客戶端的消息緩沖池,消息緩沖池默認(rèn)最大值為32M,交由一個sender線程進(jìn)行消息發(fā)送。消息在緩存池會分為一個個把它分成,每個batch默認(rèn)16kb,消息一旦滿足該大小或超過最大空閑時間,會被發(fā)送到broker。producer可以配置消息重發(fā)次數(shù),由于網(wǎng)絡(luò)抖動等原因,消息可能會重新進(jìn)行發(fā)送。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容