日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1. Kafka簡介

Apache Kafka 是一種高吞吐、分布式的流處理平臺,由 LinkedIn 開發并于 2011 年開源。它具有高伸縮性、高可靠性和低延遲等特點,因此在大型數據處理場景中備受青睞。Kafka 可以處理多種類型的數據,如事件、日志、指標等,廣泛應用于實時數據流處理、日志收集、監控和分析等領域。

通常用作消息隊列和流處理,作為消息隊列的時候,競品有RabbitMQ、ActiveMQ、RocketMQ、Apache Pulsar等。

2. Kafka架構

下面介紹一下Kafka架構中最重要的三個參與者:

  1. Producer(生產者):生產者負責將消息發送到 Kafka 集群。
  2. Consumer(消費者):消費者負責從 Kafka 集群中拉取并消費消息。
  3. Broker(代理節點):Broker 是 Kafka 集群中的一個服務代理節點,可以看作是一臺服務器。Kafka 集群通常由多個 Broker 組成,以實現負載均衡和容錯。

圖片

3. 分區與副本

Kafka為了對消息進行分類,引入了Topic(主題)的概念。生產者在發送消息的時候,需要指定發送到某個Topic,然后消息者訂閱這個Topic并進行消費消息。

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

Kafka為了提高系統的吞吐量和可擴展性,把一個Topic的不同Partition放到多個Broker節點上,充分利用機器資源,也便于擴展Partition。

Kafka為了保證數據的安全性和服務的高可用,又在Partition的基礎上,引入Replica(副本)的概念。一個Partition包含多個Replica,Replica之間是一主多從的關系,有兩種類型Leader Replica(領導者副本)Follower Replica(跟隨者副本),Replica分布在不同的Broker節點上。

Leader Replica負責讀寫請求,Follower Replica只負責同步Leader Replica數據,不對外提供服務。當Leader Replica發生故障,就從Follower Replica選舉出一個新的Leader Replica繼續對外提供服務,實現了故障自動轉移。

下圖展示的是,同一個Topic的不同Partition在Broker節點的分布情況:

圖片

Kafka為了提升Replica的同步效率和數據寫入效率,又對Replica進行分類。針對一個Partition的所有Replica集合統稱為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中某個Follower Replica同步數據落后Leader Replica過多,會被轉移到OSR中。如果OSR中的某個Follower Replica同步數據追上了Leader Replica,會被轉移到ISR中。當Leader Replica發生故障的時候,只會從ISR中選舉出新的Leader Replica。

4. 偏移量

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

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

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

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

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

圖片

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

圖片

  1. Leader Replica開始向Follower Replica同步消息,同步速率不同,Follower1的兩條消息2和3已經同步完成,而Follower2只同步了一條消息2。此時,Leader和Follower1的LEO都是4,而Follower2的LEO是3,HW表示已成功同步的最小偏移量,值是3,表示此時消費者只能讀到0、1、2,三條消息。

圖片

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

圖片

5. 消費者組

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

為了保證同一個Partition的消息被順序處理,針對一個消費者組,一個Partition的消息只會交給這個消息者組的一個消費者處理。

圖片

6. 總結

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

 

分享到:
標簽:Kafka
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定