新聞中心
一、Producer
生產(chǎn)者創(chuàng)建消息。

十余年的天柱網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整天柱建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“天柱網(wǎng)站設(shè)計(jì)”,“天柱網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
該角色將消息發(fā)布到Kafka的topic中。broker接收到生產(chǎn)者發(fā)送的消息后,broker將該消息追加到 當(dāng)前用于追加數(shù)據(jù)的 segment 文件中。
一般情況下,一個消息會被發(fā)布到一個特定的主題上。
1. 默認(rèn)情況下通過輪詢把消息均衡地分布到主題的所有分區(qū)上。
2. 在某些情況下,生產(chǎn)者會把消息直接寫到指定的分區(qū)。這通常是通過消息鍵和分區(qū)器來實(shí)現(xiàn) 的,分區(qū)器為鍵生成一個散列值,并將其映射到指定的分區(qū)上。這樣可以保證包含同一個鍵的 消息會被寫到同一個分區(qū)上。
3. 生產(chǎn)者也可以使用自定義的分區(qū)器,根據(jù)不同的業(yè)務(wù)規(guī)則將消息映射到分區(qū)。
二、Consumer
消費(fèi)者讀取消息。
1. 消費(fèi)者訂閱一個或多個主題,并按照消息生成的順序讀取它們。
2. 消費(fèi)者通過檢查消息的偏移量來區(qū)分已經(jīng)讀取過的消息。偏移量是另一種元數(shù)據(jù),它是一個不 斷遞增的整數(shù)值,在創(chuàng)建消息時(shí),Kafka 會把它添加到消息里。在給定的分區(qū)里,每個消息的 偏移量都是唯一的。消費(fèi)者把每個分區(qū)最后讀取的消息偏移量保存在Zookeeper 或Kafka 上,如果消費(fèi)者關(guān)閉或重啟,它的讀取狀態(tài)不會丟失。
3. 消費(fèi)者是消費(fèi)組的一部分。群組保證每個分區(qū)只能被一個消費(fèi)者使用。
4. 如果一個消費(fèi)者失效,消費(fèi)組里的其他消費(fèi)者可以接管失效消費(fèi)者的工作,再平衡,分區(qū)重新 分配。
三、Broker
一個獨(dú)立的Kafka 服務(wù)器被稱為broker。
broker 為消費(fèi)者提供服務(wù),對讀取分區(qū)的請求作出響應(yīng),返回已經(jīng)提交到磁盤上的消息。
1. 如果某topic有N個partition,集群有N個broker,那么每個broker存儲該topic的一個 partition。
2. 如果某topic有N個partition,集群有(N+M)個broker,那么其中有N個broker存儲該topic的一 個partition,剩下的M個broker不存儲該topic的partition數(shù)據(jù)。
3. 如果某topic有N個partition,集群中broker數(shù)目少于N個,那么一個broker存儲該topic的一 個或多個partition。在實(shí)際生產(chǎn)環(huán)境中,盡量避免這種情況的發(fā)生,這種情況容易導(dǎo)致Kafka 集群數(shù)據(jù)不均衡。
broker 是集群的組成部分。每個集群都有一個broker 同時(shí)充當(dāng)了集群控制器的角色(自動從集群 的活躍成員中選舉出來)。
控制器負(fù)責(zé)管理工作,包括將分區(qū)分配給broker 和監(jiān)控broker。
在集群中,一個分區(qū)從屬于一個broker,該broker 被稱為分區(qū)的首領(lǐng)。
四、Topic
每條發(fā)布到Kafka集群的消息都有一個類別,這個類別被稱為Topic。 物理上不同Topic的消息分開存儲。 主題就好比數(shù)據(jù)庫的表,尤其是分庫分表之后的邏輯表。
五、Partition
1. 主題可以被分為若干個分區(qū),一個分區(qū)就是一個提交日志。
2. 消息以追加的方式寫入分區(qū),然后以先入先出的順序讀取。
3. 無法在整個主題范圍內(nèi)保證消息的順序,但可以保證消息在單個分區(qū)內(nèi)的順序。
4. Kafka 通過分區(qū)來實(shí)現(xiàn)數(shù)據(jù)冗余和伸縮性。
5. 在需要嚴(yán)格保證消息的消費(fèi)順序的場景下,需要將partition數(shù)目設(shè)為1。
六、Replicas
Kafka 使用主題來組織數(shù)據(jù),每個主題被分為若干個分區(qū),每個分區(qū)有多個副本。那些副本被保存 在broker 上,每個broker 可以保存成百上千個屬于不同主題和分區(qū)的副本。 副本有以下兩種類型:
首領(lǐng)副本
每個分區(qū)都有一個首領(lǐng)副本。為了保證一致性,所有生產(chǎn)者請求和消費(fèi)者請求都會經(jīng)過這個副本。
跟隨者副本
首領(lǐng)以外的副本都是跟隨者副本。跟隨者副本不處理來自客戶端的請求,它們唯一的任務(wù)就是從首領(lǐng)那里復(fù)制消息,保持與首領(lǐng)一致的狀態(tài)。如果首領(lǐng)發(fā)生崩潰,其中的一個跟隨者會被提升為新首領(lǐng)。
七、Offset
生產(chǎn)者Offset
消息寫入的時(shí)候,每一個分區(qū)都有一個offset,這個offset就是生產(chǎn)者的offset,同時(shí)也是這個分區(qū) 的最新最大的offset。 有些時(shí)候沒有指定某一個分區(qū)的offset,這個工作kafka幫我們完成。
消費(fèi)者Offset
這是某一個分區(qū)的offset情況,生產(chǎn)者寫入的offset是最新最大的值是12,而當(dāng)Consumer A進(jìn)行消 費(fèi)時(shí),從0開始消費(fèi),一直消費(fèi)到了9,消費(fèi)者的offset就記錄在9,Consumer B就紀(jì)錄在了11。等下一 次他們再來消費(fèi)時(shí),他們可以選擇接著上一次的位置消費(fèi),當(dāng)然也可以選擇從頭消費(fèi),或者跳到最近的 記錄并從“現(xiàn)在”開始消費(fèi)。
八、 副本
Kafka通過副本保證高可用。副本分為首領(lǐng)副本(Leader)和跟隨者副本(Follower)。 跟隨者副本包括同步副本和不同步副本,在發(fā)生首領(lǐng)副本切換的時(shí)候,只有同步副本可以切換為首 領(lǐng)副本。
AR
分區(qū)中的所有副本統(tǒng)稱為AR(Assigned Repllicas)。 AR=ISR+OSR
ISR
所有與leader副本保持一定程度同步的副本(包括Leader)組成ISR(In-Sync Replicas),ISR集合 是AR集合中的一個子集。消息會先發(fā)送到leader副本,然后follower副本才能從leader副本中拉取消息 進(jìn)行同步,同步期間內(nèi)follower副本相對于leader副本而言會有一定程度的滯后。前面所說的“一定程度” 是指可以忍受的滯后范圍,這個范圍可以通過參數(shù)進(jìn)行配置。
OSR
與leader副本同步滯后過多的副本(不包括leader)副本,組成OSR(Out-Sync Relipcas)。在正常 情況下,所有的follower副本都應(yīng)該與leader副本保持一定程度的同步,即AR=ISR,OSR集合為空。
HW
HW是High Watermak的縮寫, 俗稱高水位,它表示了一個特定消息的偏移量(offset),消費(fèi)之 只能拉取到這個offset之前的消息。
LEO
LEO是Log End Offset的縮寫,它表示了當(dāng)前日志文件中下一條待寫入消息的offset。
網(wǎng)站標(biāo)題:我們一起聊聊Kafka核心概念,你學(xué)會了嗎?
網(wǎng)站鏈接:http://www.dlmjj.cn/article/dhjhoep.html


咨詢
建站咨詢
