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

超簡(jiǎn)單的Kafka架構(gòu)入門指南,看這一篇就夠了

開發(fā) 架構(gòu)
本文簡(jiǎn)單介紹了Kafka架構(gòu),以及架構(gòu)中涉及到底的一些名詞概念,包括Producer(生產(chǎn)者)、Consumer(消費(fèi)者)、Broker(代理節(jié)點(diǎn))、Topic(主題)、Partition(分區(qū))、Leader Replica(領(lǐng)導(dǎo)者副本)、Follower Replica(跟隨者副本)、LEO(Log End Offset,日志結(jié)束偏移量)、HW(High Watermark,高水位)、Cons

1. Kafka簡(jiǎn)介

Apache Kafka 是一種高吞吐、分布式的流處理平臺(tái),由 LinkedIn 開發(fā)并于 2011 年開源。它具有高伸縮性、高可靠性和低延遲等特點(diǎn),因此在大型數(shù)據(jù)處理場(chǎng)景中備受青睞。Kafka 可以處理多種類型的數(shù)據(jù),如事件、日志、指標(biāo)等,廣泛應(yīng)用于實(shí)時(shí)數(shù)據(jù)流處理、日志收集、監(jiān)控和分析等領(lǐng)域。

通常用作消息隊(duì)列和流處理,作為消息隊(duì)列的時(shí)候,競(jìng)品有RabbitMQ、ActiveMQ、RocketMQ、Apache Pulsar等。

2. Kafka架構(gòu)

下面介紹一下Kafka架構(gòu)中最重要的三個(gè)參與者:

  1. Producer(生產(chǎn)者):生產(chǎn)者負(fù)責(zé)將消息發(fā)送到 Kafka 集群。
  2. Consumer(消費(fèi)者):消費(fèi)者負(fù)責(zé)從 Kafka 集群中拉取并消費(fèi)消息。
  3. Broker(代理節(jié)點(diǎn)):Broker 是 Kafka 集群中的一個(gè)服務(wù)代理節(jié)點(diǎn),可以看作是一臺(tái)服務(wù)器。Kafka 集群通常由多個(gè) Broker 組成,以實(shí)現(xiàn)負(fù)載均衡和容錯(cuò)。

圖片

3. 分區(qū)與副本

Kafka為了對(duì)消息進(jìn)行分類,引入了Topic(主題)的概念。生產(chǎn)者在發(fā)送消息的時(shí)候,需要指定發(fā)送到某個(gè)Topic,然后消息者訂閱這個(gè)Topic并進(jìn)行消費(fèi)消息。

Kafka為了提升性能,又在Topic的基礎(chǔ)上,引入了Partition(分區(qū))的概念。Topic是邏輯概念,而Partition是物理分組。一個(gè)Topic可以包含多個(gè)Partition,生產(chǎn)者在發(fā)送消息的時(shí)候,需要指定發(fā)送到某個(gè)Topic的某個(gè)Partition,然后消息者訂閱這個(gè)Topic并消費(fèi)這個(gè)Partition中的消息。

Kafka為了提高系統(tǒng)的吞吐量和可擴(kuò)展性,把一個(gè)Topic的不同Partition放到多個(gè)Broker節(jié)點(diǎn)上,充分利用機(jī)器資源,也便于擴(kuò)展Partition。

Kafka為了保證數(shù)據(jù)的安全性和服務(wù)的高可用,又在Partition的基礎(chǔ)上,引入Replica(副本)的概念。一個(gè)Partition包含多個(gè)Replica,Replica之間是一主多從的關(guān)系,有兩種類型Leader Replica(領(lǐng)導(dǎo)者副本)Follower Replica(跟隨者副本),Replica分布在不同的Broker節(jié)點(diǎn)上。

Leader Replica負(fù)責(zé)讀寫請(qǐng)求,F(xiàn)ollower Replica只負(fù)責(zé)同步Leader Replica數(shù)據(jù),不對(duì)外提供服務(wù)。當(dāng)Leader Replica發(fā)生故障,就從Follower Replica選舉出一個(gè)新的Leader Replica繼續(xù)對(duì)外提供服務(wù),實(shí)現(xiàn)了故障自動(dòng)轉(zhuǎn)移。

下圖展示的是,同一個(gè)Topic的不同Partition在Broker節(jié)點(diǎn)的分布情況:

圖片

Kafka為了提升Replica的同步效率和數(shù)據(jù)寫入效率,又對(duì)Replica進(jìn)行分類。針對(duì)一個(gè)Partition的所有Replica集合統(tǒng)稱為AR(Assigned Replicas,已分配的副本),包含Leader Replica和Follower Replica。與Leader Replica保持同步的Replica集合稱為ISR(In-Sync Replicas,同步副本),與Leader Replica保持失去同步的Replica集合稱為OSR(Out-of-Sync Replicas,失去同步的副本),AR = ISR + OSR

Leader Replica將消息寫入磁盤前,需要等ISR中的所有副本同步完成。如果ISR中某個(gè)Follower Replica同步數(shù)據(jù)落后Leader Replica過多,會(huì)被轉(zhuǎn)移到OSR中。如果OSR中的某個(gè)Follower Replica同步數(shù)據(jù)追上了Leader Replica,會(huì)被轉(zhuǎn)移到ISR中。當(dāng)Leader Replica發(fā)生故障的時(shí)候,只會(huì)從ISR中選舉出新的Leader Replica。

4. 偏移量

Kafka為了記錄副本的同步狀態(tài),以及控制消費(fèi)者消費(fèi)消息的范圍,于是引入了LEO(Log End Offset,日志結(jié)束偏移量)HW(High Watermark,高水位)。

LEO表示分區(qū)中的下一個(gè)被寫入消息的偏移量,也是分區(qū)中的最大偏移量。LEO用于記錄Leader Replica和Follower Replica之間的數(shù)據(jù)同步進(jìn)度,每個(gè)副本中各有一份。

HW表示所有副本(Leader和Follower)都已成功復(fù)制的最小偏移量,是所有副本共享的數(shù)據(jù)值。換句話說,HW之前的消息都被視為已提交,消費(fèi)者可以消費(fèi)這些消息。用于確保消息的一致性和只讀一次。

下面演示一下LEO和HW的更新流程:

  1. 初始狀態(tài),三個(gè)副本中各有0和1兩條消息,LEO都是2,位置2是空的,表示是即將被寫入消息的位置。HW也都是2,表示Leader Replica中的所有消息已經(jīng)全部同步到Follower Replica中,消費(fèi)者可以消費(fèi)0和1兩條消息。

圖片

  1. 生產(chǎn)者往Leader Replica中發(fā)送兩條消息,此時(shí)Leader Replica的LEO的值增加2,變成4。由于還沒有開始往Follower Replica同步消息,所以HW值和Follower Replica中LEO值都沒有變。由于消費(fèi)者只能消費(fèi)HW之前的消息,也就是0和1兩條消息。

圖片

  1. Leader Replica開始向Follower Replica同步消息,同步速率不同,F(xiàn)ollower1的兩條消息2和3已經(jīng)同步完成,而Follower2只同步了一條消息2。此時(shí),Leader和Follower1的LEO都是4,而Follower2的LEO是3,HW表示已成功同步的最小偏移量,值是3,表示此時(shí)消費(fèi)者只能讀到0、1、2,三條消息。

圖片

  1. 所有消息都同步完成,三個(gè)副本的LEO都是4,HW也是4,消費(fèi)者可以讀到0、1、2、3,四條消息。

圖片

5. 消費(fèi)者組

Kafka為了提高消息的處理效率,引入了消費(fèi)者組的概念。一個(gè)消費(fèi)者組(Consumer Group)包含多個(gè)消費(fèi)者,一個(gè)消費(fèi)者組可以同時(shí)訂閱多個(gè)Topic,一個(gè)Topic也可以同時(shí)被多個(gè)消費(fèi)者組訂閱。

為了保證同一個(gè)Partition的消息被順序處理,針對(duì)一個(gè)消費(fèi)者組,一個(gè)Partition的消息只會(huì)交給這個(gè)消息者組的一個(gè)消費(fèi)者處理。

圖片

6. 總結(jié)

本文簡(jiǎn)單介紹了Kafka架構(gòu),以及架構(gòu)中涉及到底的一些名詞概念,包括Producer(生產(chǎn)者)、Consumer(消費(fèi)者)、Broker(代理節(jié)點(diǎn))、Topic(主題)、Partition(分區(qū))、Leader Replica(領(lǐng)導(dǎo)者副本)、Follower Replica(跟隨者副本)、LEO(Log End Offset,日志結(jié)束偏移量)、HW(High Watermark,高水位)、Consumer Group(消費(fèi)者組)等。


責(zé)任編輯:武曉燕 來源: 一燈架構(gòu)
相關(guān)推薦

2023-09-11 08:13:03

分布式跟蹤工具

2019-05-14 09:31:16

架構(gòu)整潔軟件編程范式

2020-10-18 07:32:06

SD-WAN網(wǎng)絡(luò)傳統(tǒng)廣域網(wǎng)

2018-11-14 11:57:28

2023-02-10 09:04:27

2020-02-18 16:20:03

Redis ANSI C語(yǔ)言日志型

2022-06-20 09:01:23

Git插件項(xiàng)目

2017-11-13 15:16:56

GitHub代碼倉(cāng)庫(kù)

2022-08-01 11:33:09

用戶分析標(biāo)簽策略

2021-04-08 07:37:39

隊(duì)列數(shù)據(jù)結(jié)構(gòu)算法

2022-07-05 09:24:01

Pandas表格樣式Python

2023-10-30 07:12:04

2018-05-22 08:24:50

PythonPyMongoMongoDB

2023-10-17 08:15:28

API前后端分離

2024-09-23 08:00:00

消息隊(duì)列MQ分布式系統(tǒng)

2020-07-03 08:21:57

Java集合框架

2017-03-11 22:19:09

深度學(xué)習(xí)

2022-04-07 10:39:21

反射Java安全

2023-11-18 09:30:42

模型AI

2024-07-31 15:39:00

點(diǎn)贊
收藏

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