kafka引入消費組的原因剖析

2021-10-04 17:52:17 字數 984 閱讀 4241

消費者(cunsumer)負責訂閱kafka中的主題(topic),並且從主題上拉取訊息。與其他的一些訊息中介軟體不同的是:在kafka的消費理念中還有一層消費組的概念,每個消費者都有乙個對應的消費組。當訊息發布到主題後,只會被投遞給訂閱它的每個消費組中乙個消費者。

​ 消費者與消費組

下面我們來看下消費組內的消費者個數變化時對應的分割槽分配演變。假設目前消費組內只有乙個消費者c0,訂閱了乙個主題,該主題包含7個分割槽,也就是說c0訂閱了該7個分割槽:分配圖如下:

​ 乙個消費者分配圖

此時當消費組內新增了乙個消費者c1後,分配圖如下所示:

​ 兩個消費者的情況

消費者與消費組的這種模型可以讓整體的消費能力具備橫向伸縮性。我們可以增加消費者數量來提公升整體消費能力,但是分割槽數固定情況下,如果消費者數量大於分割槽數時,將會出現有消費者分配不到分割槽。如下圖所示7個分割槽8個消費的情況下,就必定會有乙個消費者無法消費任何訊息。其中消費者c7就沒法進行資料的消費

對於中介軟體而言,一般有兩種投遞模式:點對點模式和發布訂閱模式。

點對點模式是基於佇列的,生產者傳送訊息到佇列,消費者從佇列中獲取訊息。但是訊息一旦被消費,就會從佇列中刪除,而且只能被下游的乙個consumer消費。

發布訂閱模式:發布訂閱模式定義 了如何向乙個內容節點發布和訂閱訊息,這個內容節點稱為主題,主題可以認為是訊息傳遞的中介,訊息發布者將訊息發布某個主題上,而訊息訂閱者從主題中訂閱訊息。

kafka消費延遲或者重複消費原因

由於專案中需要使用kafka作為訊息佇列,並且專案是基於spring boot來進行構建的,所以專案採用了spring kafka作為原生kafka的乙個擴充套件庫進行使用。先說明一下版本 用過kafka的人都知道,對於使用kafka來說,producer的使用相對簡單一些,只需要把資料按照指定的格...

kafka檢視消費組未消費資料情況0 9之後版本

bin kafka topics.sh zookeeper 127.0.0.1 2181 list 檢視topic bin kafka consumer groups.sh new consumer bootstrap server localhost 9092 list 檢視消費組 bin kaf...

kafka 主動消費 Kafka消費者的使用和原理

publicstaticvoidmain string args finally 前兩步和生產者類似,配置引數然後根據引數建立例項,區別在於消費者使用的是反序列化器,以及多了乙個必填引數 group.id,用於指定消費者所屬的消費組。關於消費組的概念在 kafka中的基本概念 中介紹過了,消費組使得...