自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我們一起聊聊Kafka核心概念,你學(xué)會(huì)了嗎?

開發(fā) 前端
在某些情況下,生產(chǎn)者會(huì)把消息直接寫到指定的分區(qū)。這通常是通過消息鍵和分區(qū)器來(lái)實(shí)現(xiàn) 的,分區(qū)器為鍵生成一個(gè)散列值,并將其映射到指定的分區(qū)上。這樣可以保證包含同一個(gè)鍵的 消息會(huì)被寫到同一個(gè)分區(qū)上。

一、Producer

生產(chǎn)者創(chuàng)建消息。

該角色將消息發(fā)布到Kafka的topic中。broker接收到生產(chǎn)者發(fā)送的消息后,broker將該消息追加到 當(dāng)前用于追加數(shù)據(jù)的 segment 文件中。

一般情況下,一個(gè)消息會(huì)被發(fā)布到一個(gè)特定的主題上。

1. 默認(rèn)情況下通過輪詢把消息均衡地分布到主題的所有分區(qū)上。

2. 在某些情況下,生產(chǎn)者會(huì)把消息直接寫到指定的分區(qū)。這通常是通過消息鍵和分區(qū)器來(lái)實(shí)現(xiàn) 的,分區(qū)器為鍵生成一個(gè)散列值,并將其映射到指定的分區(qū)上。這樣可以保證包含同一個(gè)鍵的 消息會(huì)被寫到同一個(gè)分區(qū)上。

3. 生產(chǎn)者也可以使用自定義的分區(qū)器,根據(jù)不同的業(yè)務(wù)規(guī)則將消息映射到分區(qū)。

二、Consumer

消費(fèi)者讀取消息。

1. 消費(fèi)者訂閱一個(gè)或多個(gè)主題,并按照消息生成的順序讀取它們。

2. 消費(fèi)者通過檢查消息的偏移量來(lái)區(qū)分已經(jīng)讀取過的消息。偏移量是另一種元數(shù)據(jù),它是一個(gè)不 斷遞增的整數(shù)值,在創(chuàng)建消息時(shí),Kafka 會(huì)把它添加到消息里。在給定的分區(qū)里,每個(gè)消息的 偏移量都是唯一的。消費(fèi)者把每個(gè)分區(qū)最后讀取的消息偏移量保存在Zookeeper 或Kafka 上,如果消費(fèi)者關(guān)閉或重啟,它的讀取狀態(tài)不會(huì)丟失。

3. 消費(fèi)者是消費(fèi)組的一部分。群組保證每個(gè)分區(qū)只能被一個(gè)消費(fèi)者使用。

4. 如果一個(gè)消費(fèi)者失效,消費(fèi)組里的其他消費(fèi)者可以接管失效消費(fèi)者的工作,再平衡,分區(qū)重新 分配。

三、Broker

一個(gè)獨(dú)立的Kafka 服務(wù)器被稱為broker。

broker 為消費(fèi)者提供服務(wù),對(duì)讀取分區(qū)的請(qǐng)求作出響應(yīng),返回已經(jīng)提交到磁盤上的消息。

1. 如果某topic有N個(gè)partition,集群有N個(gè)broker,那么每個(gè)broker存儲(chǔ)該topic的一個(gè) partition。

2. 如果某topic有N個(gè)partition,集群有(N+M)個(gè)broker,那么其中有N個(gè)broker存儲(chǔ)該topic的一 個(gè)partition,剩下的M個(gè)broker不存儲(chǔ)該topic的partition數(shù)據(jù)。

3. 如果某topic有N個(gè)partition,集群中broker數(shù)目少于N個(gè),那么一個(gè)broker存儲(chǔ)該topic的一 個(gè)或多個(gè)partition。在實(shí)際生產(chǎn)環(huán)境中,盡量避免這種情況的發(fā)生,這種情況容易導(dǎo)致Kafka 集群數(shù)據(jù)不均衡。

broker 是集群的組成部分。每個(gè)集群都有一個(gè)broker 同時(shí)充當(dāng)了集群控制器的角色(自動(dòng)從集群 的活躍成員中選舉出來(lái))。

控制器負(fù)責(zé)管理工作,包括將分區(qū)分配給broker 和監(jiān)控broker。

在集群中,一個(gè)分區(qū)從屬于一個(gè)broker,該broker 被稱為分區(qū)的首領(lǐng)。

四、Topic

每條發(fā)布到Kafka集群的消息都有一個(gè)類別,這個(gè)類別被稱為Topic。 物理上不同Topic的消息分開存儲(chǔ)。 主題就好比數(shù)據(jù)庫(kù)的表,尤其是分庫(kù)分表之后的邏輯表。

五、Partition

1. 主題可以被分為若干個(gè)分區(qū),一個(gè)分區(qū)就是一個(gè)提交日志。

2. 消息以追加的方式寫入分區(qū),然后以先入先出的順序讀取。

3. 無(wú)法在整個(gè)主題范圍內(nèi)保證消息的順序,但可以保證消息在單個(gè)分區(qū)內(nèi)的順序。

4. Kafka 通過分區(qū)來(lái)實(shí)現(xiàn)數(shù)據(jù)冗余和伸縮性。

5. 在需要嚴(yán)格保證消息的消費(fèi)順序的場(chǎng)景下,需要將partition數(shù)目設(shè)為1。

六、Replicas

Kafka 使用主題來(lái)組織數(shù)據(jù),每個(gè)主題被分為若干個(gè)分區(qū),每個(gè)分區(qū)有多個(gè)副本。那些副本被保存 在broker 上,每個(gè)broker 可以保存成百上千個(gè)屬于不同主題和分區(qū)的副本。 副本有以下兩種類型:

首領(lǐng)副本

每個(gè)分區(qū)都有一個(gè)首領(lǐng)副本。為了保證一致性,所有生產(chǎn)者請(qǐng)求和消費(fèi)者請(qǐng)求都會(huì)經(jīng)過這個(gè)副本。

跟隨者副本

首領(lǐng)以外的副本都是跟隨者副本。跟隨者副本不處理來(lái)自客戶端的請(qǐng)求,它們唯一的任務(wù)就是從首領(lǐng)那里復(fù)制消息,保持與首領(lǐng)一致的狀態(tài)。如果首領(lǐng)發(fā)生崩潰,其中的一個(gè)跟隨者會(huì)被提升為新首領(lǐng)。

七、Offset

生產(chǎn)者Offset

消息寫入的時(shí)候,每一個(gè)分區(qū)都有一個(gè)offset,這個(gè)offset就是生產(chǎn)者的offset,同時(shí)也是這個(gè)分區(qū) 的最新最大的offset。 有些時(shí)候沒有指定某一個(gè)分區(qū)的offset,這個(gè)工作kafka幫我們完成。

消費(fèi)者Offset

這是某一個(gè)分區(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。等下一 次他們?cè)賮?lái)消費(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集合中的一個(gè)子集。消息會(huì)先發(fā)送到leader副本,然后follower副本才能從leader副本中拉取消息 進(jìn)行同步,同步期間內(nèi)follower副本相對(duì)于leader副本而言會(huì)有一定程度的滯后。前面所說(shuō)的“一定程度” 是指可以忍受的滯后范圍,這個(gè)范圍可以通過參數(shù)進(jìn)行配置。

OSR

與leader副本同步滯后過多的副本(不包括leader)副本,組成OSR(Out-Sync Relipcas)。在正常 情況下,所有的follower副本都應(yīng)該與leader副本保持一定程度的同步,即AR=ISR,OSR集合為空。

HW

HW是High Watermak的縮寫, 俗稱高水位,它表示了一個(gè)特定消息的偏移量(offset),消費(fèi)之 只能拉取到這個(gè)offset之前的消息。

LEO

LEO是Log End Offset的縮寫,它表示了當(dāng)前日志文件中下一條待寫入消息的offset。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2023-11-13 18:36:04

知識(shí)抽取NER

2023-10-31 14:04:17

Rust類型編譯器

2023-04-13 08:40:12

MySQL服務(wù)器SELECT

2025-01-06 09:26:49

2023-01-03 08:13:26

GoModulesMaven

2022-06-15 08:00:50

磁盤RedisRocketMQ

2021-12-14 09:34:31

丑數(shù)順序指針

2021-05-31 09:23:04

管道模式責(zé)任鏈

2022-10-28 07:27:17

Netty異步Future

2024-09-13 09:05:31

架構(gòu)思維程序

2024-10-17 10:00:59

2024-09-11 08:02:27

k8sgitlab升級(jí)

2022-12-26 07:48:04

敏捷項(xiàng)目

2024-06-12 08:36:25

2024-03-05 10:09:16

restfulHTTPAPI

2023-01-29 08:08:34

并發(fā)庫(kù)conc通用庫(kù)

2023-07-10 08:36:21

工具pptword

2022-04-01 08:48:45

JavaPythonRuby

2024-08-19 10:24:14

2022-07-11 09:00:37

依賴配置文件Mybati
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)