日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kafka系列4-基本概念及消费者组(Consumer Group)的理解

發布時間:2024/5/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kafka系列4-基本概念及消费者组(Consumer Group)的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

幾個基本概念:

? ? Kafka是一個分布式流數據系統,使用Zookeeper進行集群的管理。與其他消息系統類似,整個系統由生產者、Broker Server和消費者三部分組成,生產者和消費者由開發人員編寫,通過API連接到Broker Server進行數據操作。我們重點關注三個概念:

? ? Topic,是Kafka下消息的類別,類似于RabbitMQ中的Exchange的概念。這是邏輯上的概念,用來區分、隔離不同的消息數據,屏蔽了底層復雜的存儲方式。對于大多數人來說,在開發的時候只需要關注數據寫入到了哪個topic、從哪個topic取出數據。?

? ? Partition,是Kafka下數據存儲的基本單元,這個是物理上的概念。同一個topic的數據,會被分散的存儲到多個partition中,這些partition可以在同一臺機器上,也可以是在多臺機器上,比如下圖所示的topic就有4個partition,分散在兩臺機器上。這種方式在大多數分布式存儲中都可以見到,比如MongoDB、Elasticsearch的分片技術,其優勢在于:有利于水平擴展,避免單臺機器在磁盤空間和性能上的限制,同時可以通過復制來增加數據冗余性,提高容災能力。為了做到均勻分布,通常partition的數量通常是Broker Server數量的整數倍。

? ? Consumer Group,同樣是邏輯上的概念,是Kafka實現單播和廣播兩種消息模型的手段。同一個topic的數據,會廣播給不同的group;同一個group中的worker,只有一個worker能拿到這個數據。換句話說,對于同一個topic,每個group都可以拿到同樣的所有數據,但是數據進入group后只能被其中的一個worker消費。group內的worker可以使用多線程或多進程來實現,也可以將進程分散在多臺機器上,worker的數量通常不超過partition的數量,且二者最好保持整數倍關系,因為Kafka在設計時假定了一個partition只能被一個worker消費(同一group內)。


Broker

物理概念,指服務于Kafka的一個node。

topic

是一個邏輯概念。

MQ中的抽象概念,是一個消費標示。用于保證Producer以及Consumer能夠通過該標示進行對接。可以理解為一種Naming方式。

partition

是一個物理概念。partition會實際存儲在系統的摸個目錄。

Topic的一個子概念,一個topic可具有多個partition,但Partition一定屬于一個topic。

值得注意的是:

  • 在實現上都是以每個Partition為基本實現單元的。
  • 消費時,每個消費線程最多只能使用一個partition。
  • 一個topic中partition的數量,就是每個user group中消費該topic的最大并行度數量。

User group

為了便于實現MQ中的多播,重復消費等引入的概念。如果ConsumerA以及ConsumerB同在一個UserGroup,那么ConsumerA消費的數據ConsumerB就無法消費了。

即:所有usergroup中的consumer使用一套offset。

Offset

Offset專指Partition以及User Group而言,記錄某個user group在某個partiton中當前已經消費到達的位置。



什么是消費者組(Consumer Group)


consumer group是kafka提供的可擴展且具有容錯性的消費者機制。既然是一個組,那么組內必然可以有多個消費者或消費者實例(consumer instance),它們共享一個公共的ID,即group ID。組內的所有消費者協調在一起來消費訂閱主題(subscribed topics)的所有分區(partition)。當然,每個分區只能由同一個消費組內的一個consumer來消費。理解consumer group記住下面這三個特性就好了:

1)consumer group下可以有一個或多個consumer instance,consumer instance可以是一個進程,也可以是一個線程
2)group.id是一個字符串,唯一標識一個consumer group
3)consumer group下訂閱的topic下的每個分區只能分配給某個group下的一個consumer(當然該分區還可以被分配給其他group)



總結

以上是生活随笔為你收集整理的Kafka系列4-基本概念及消费者组(Consumer Group)的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。