Kafka簡介

Kafka是一個分布式消息隊列,具有高性能、持久化、多副本、橫向擴展能力。生產(chǎn)者往隊列里寫消息,消費者從隊列里取消息進行業(yè)務(wù)邏輯。一般在架構(gòu)設(shè)計中起到解耦、削峰、異步處理的作用。

Kafka對外使用topic概念,生產(chǎn)者往topic里寫消息,消費者從topic中讀消息。為了做到水平擴展,一個topic實際是由多個partition組成的,遇到瓶頸時,可以通過partition的數(shù)量來進行橫向擴容。Kafka的數(shù)據(jù)是按照一定順序持久化保存,單個partition內(nèi)是保證消息有序。

Kafka拓撲結(jié)構(gòu)

Broker: 一個獨立的Kafka服務(wù)器被稱為Broker。Broker接收來自生產(chǎn)者的消息,為消息設(shè)置偏移量,并提交消息到磁盤保存。broker為消費者提供服務(wù),對讀取分區(qū)的請求作出響應(yīng),返回已經(jīng)提交到磁盤上的消息,

Topic: 主題,消息源。Kafka的消息按照主題進行分類。主題好比數(shù)據(jù)庫的表,或者文件系統(tǒng)里的文件夾。主題可以被分為若干個分區(qū),即一個表中有多個列,或者一個文件系統(tǒng)的文件夾中有多個文件。

Partition: 分區(qū),一個分區(qū)就是一個提交日志,消息以追加的方式寫入分區(qū),然后以先入先出的順序讀取。由于一個主題一般包含多個分區(qū),因此,無法在整個主題范圍內(nèi)保證消息的順序,但是,可以保證消息在單個分區(qū)內(nèi)的順序。

Producer : 生產(chǎn)者,創(chuàng)建消息。默認情況下,把消息均衡地分不到主題的所有分區(qū)上,而并不關(guān)心特定消息會被寫到哪個分區(qū);某些情況下,生產(chǎn)者會把消息直接寫到指定的分區(qū),通過消息鍵和分區(qū)器來實現(xiàn),分區(qū)器為建生成一個散列值,并將其映射到指定的分區(qū)上。

Consumer: 消費者,讀取數(shù)據(jù)。消費者訂閱一個或多個主題,并按照消息生成的順序讀取它們。消費者通過檢查消息的偏移量來區(qū)分已經(jīng)讀取過的消息。

ConsumerGroup: 消費者組,可以并行消費主題中的分區(qū)的消息的消費者組合。

偏移量: 偏移量是一個不斷遞增的整數(shù)值,在創(chuàng)建消息時,Kafka會把它添加到消息里。在給定的分區(qū)里,每個消息的偏移量都是唯一的。消費者把每個分區(qū)最后讀取的消息偏移量保存在zookeeper或Kafka上,如果消費者關(guān)閉或重啟,他的讀取狀態(tài)不會丟失。

Message: 消息,通信的基本單位,每個producer可以向一個主題發(fā)布一些消息。Message是以主題為基本單位組織的。Message包含三個屬性,分別為offset、MessageSize和data。

Producers: 消息和數(shù)據(jù)生成者,向Kafka的一個topic發(fā)布消息的過程叫做producers 。

Consumers: 消息和數(shù)據(jù)消費者,訂閱topic并處理其發(fā)布的消息的過程叫做consumers。

參考

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

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

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