kafka基礎(chǔ)概述

概述

官方地址http://kafka.apache.org/
快速入門教程:http://kafka.apache.org/quickstart
官方定義Apache Kafka is a distributed streaming platform,Kafka是一個分布式的基于發(fā)布/訂閱模式的消息隊列,主要應(yīng)用于大數(shù)據(jù)實時處理領(lǐng)域。

消息隊列的兩種模式

(1)點對點模式(一對一,消費者主動拉取數(shù)據(jù),消息收到后消息清除)
消息生產(chǎn)者生產(chǎn)消息發(fā)送到Queue中,然后消息消費者從Queue中取出并且消費消息。
消息被消費以后,queue中不再有存儲,所以消息消費者不可能消費到已經(jīng)被消費的消息。Queue支持存在多個消費者,但是對一個消息而言,只會有一個消費者可以消費。
(2)發(fā)布/訂閱模式(一對多,消費者消費數(shù)據(jù)之后不會清除消息)
消息生產(chǎn)者(發(fā)布)將消息發(fā)布到topic中,同時有多個消息消費者(訂閱)消費該消息。和點對點方式不同,發(fā)布到topic的消息會被所有訂閱者消費。

應(yīng)用場景

異步處理把非關(guān)鍵流程異步化,提高系統(tǒng)的響應(yīng)時間和健壯性
應(yīng)用解耦通過消息隊列
流量削峰

基礎(chǔ)架構(gòu)

1)Producer :消息生產(chǎn)者,就是向kafka broker發(fā)消息的客戶端;
2)Consumer :消息消費者,向kafka broker取消息的客戶端;
3)Consumer Group (CG):消費者組,由多個consumer組成。消費者組內(nèi)每個消費者負責(zé)消費不同分區(qū)的數(shù)據(jù),一個分區(qū)只能由一個消費者消費;消費者組之間互不影響。所有的消費者都屬于某個消費者組,即消費者組是邏輯上的一個訂閱者。
4)Broker :一臺kafka服務(wù)器就是一個broker。一個集群由多個broker組成。一個broker可以容納多個topic。
5)Topic :可以理解為一個隊列,生產(chǎn)者和消費者面向的都是一個topic;
6)Partition:為了實現(xiàn)擴展性,一個非常大的topic可以分布到多個broker(即服務(wù)器)上,一個topic可以分為多個partition,每個partition是一個有序的隊列;
7)Replica:副本,為保證集群中的某個節(jié)點發(fā)生故障時,該節(jié)點上的partition數(shù)據(jù)不丟失,且kafka仍然能夠繼續(xù)工作,kafka提供了副本機制,一個topic的每個分區(qū)都有若干個副本,一個leader和若干個follower。
8)leader:每個分區(qū)多個副本的“主”,生產(chǎn)者發(fā)送數(shù)據(jù)的對象,以及消費者消費數(shù)據(jù)的對象都是leader。
9)follower:每個分區(qū)多個副本中的“從”,實時從leader中同步數(shù)據(jù),保持和leader數(shù)據(jù)的同步。leader發(fā)生故障時,某個follower會成為新的follower。

工作流程

Kafka中消息是以topic進行分類的,生產(chǎn)者生產(chǎn)消息,消費者消費消息,都是面向topic的。
topic是邏輯上的概念,而partition是物理上的概念,每個partition對應(yīng)于一個log文件,該log文件中存儲的就是producer生產(chǎn)的數(shù)據(jù)。Producer生產(chǎn)的數(shù)據(jù)會被不斷追加到該log文件末端,且每條數(shù)據(jù)都有自己的offset。消費者組中的每個消費者,都會實時記錄自己消費到了哪個offset,以便出錯恢復(fù)時,從上次的位置繼續(xù)消費。

最后編輯于
?著作權(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)容