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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

怎么理解 Kafka 消费者与消费组之间的关系?

發布時間:2024/5/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么理解 Kafka 消费者与消费组之间的关系? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與生產者對應的是消費者,應用程序可以通過 KafkaConsumer 來訂閱主題,并從訂閱的主題中拉取消息。不過在使用 KafkaConsumer 消費消息之前需要先了解消費者和消費組的概念,否則無法理解如何使用KafkaConsumer。

今天先講解消費者與消費組之間的關系,后續再結合案例再細致地講解如何使用。

消費者負責訂閱 Kafka 中的主題(Topic),并且從訂閱的主題上拉取消息。與其他一些消息中間件不同的是:在 Kafka 的消費理念中還有一層消費組的概念,每個消費者都有一個對應的消費組。當消息發布到主題后,只會被投遞給訂閱它的每個消費組中的一個消費者。



如上圖所示,某個主題中共有4個分區(Partition):P0、P1、P2、P3。有兩個消費組A和B都訂閱了這個主題,消費組A中有4個消費者(C0、C1、C2和C3),消費組B中有2個消費者(C4和C5)。按照 Kafka 默認的規則,最后的分配結果是消費組A中的每一個消費者分配到1個分區,消費組B中的每一個消費者分配到2個分區,兩個消費組之間互不影響。每個消費者只能消費所分配到的分區中的消息。換言之,每一個分區只能被一個消費組中的一個消費者所消費。



我們再來看一下消費組內的消費者個數變化時所對應的分區分配的演變。假設目前某消費組內只有一個消費者C0,訂閱了一個主題,這個主題包含7個分區:P0、P1、P2、P3、P4、P5、P6。也就是說,這個消費者C0訂閱了7個分區,具體分配情形參考上圖。

此時消費組內又加入了一個新的消費者C1,按照既定的邏輯,需要將原來消費者C0的部分分區分配給消費者C1消費,如上圖所示。消費者C0和C1各自負責消費所分配到的分區,彼此之間并無邏輯上的干擾。

消費者與消費組這種模型可以讓整體的消費能力具備橫向伸縮性,我們可以增加(或減少)消費者的個數來提高(或降低)整體的消費能力。對于分區數固定的情況,一味地增加消費者并不會讓消費能力一直得到提升,如果消費者過多,出現了消費者的個數大于分區個數的情況,就會有消費者分配不到任何分區。參考下圖,一共有8個消費者,7個分區,那么最后的消費者C7由于分配不到任何分區而無法消費任何消息。

以上分配邏輯都是基于默認的分區分配策略進行分析的,可以通過消費者客戶端參數 partition.assignment.strategy 來設置消費者與訂閱主題之間的分區分配策略。

對于消息中間件而言,一般有兩種消息投遞模式:點對點(P2P,Point-to-Point)模式和發布/訂閱(Pub/Sub)模式。點對點模式是基于隊列的,消息生產者發送消息到隊列,消息消費者從隊列中接收消息。

發布訂閱模式定義了如何向一個內容節點發布和訂閱消息,這個內容節點稱為主題(Topic),主題可以認為是消息傳遞的中介,消息發布者將消息發布到某個主題,而消息訂閱者從主題中訂閱消息。主題使得消息的訂閱者和發布者互相保持獨立,不需要進行接觸即可保證消息的傳遞,發布/訂閱模式在消息的一對多廣播時采用。Kafka 同時支持兩種消息投遞模式,而這正是得益于消費者與消費組模型的契合:

  • 如果所有的消費者都隸屬于同一個消費組,那么所有的消息都會被均衡地投遞給每一個消費者,即每條消息只會被一個消費者處理,這就相當于點對點模式的應用。

  • 如果所有的消費者都隸屬于不同的消費組,那么所有的消息都會被廣播給所有的消費者,即每條消息會被所有的消費者處理,這就相當于發布/訂閱模式的應用。

消費組是一個邏輯上的概念,它將旗下的消費者歸為一類,每一個消費者只隸屬于一個消費組。每一個消費組都會有一個固定的名稱,消費者在進行消費前需要指定其所屬消費組的名稱,這個可以通過消費者客戶端參數 group.id 來配置,默認值為空字符串。

消費者并非邏輯上的概念,它是實際的應用實例,它可以是一個線程,也可以是一個進程。同一個消費組內的消費者既可以部署在同一臺機器上,也可以部署在不同的機器上。

總結

以上是生活随笔為你收集整理的怎么理解 Kafka 消费者与消费组之间的关系?的全部內容,希望文章能夠幫你解決所遇到的問題。

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