成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kafka Consumer 消費消息和 Rebalance 機制

云計算 Kafka
因為 Kafka 的 Consumer 客戶端是線程不安全的,為了保證線程安全,并提升消費性能,可以在 Consumer 端采用類似 Reactor 的線程模型來消費數據。

Kafka Consumer

Kafka 有消費組的概念,每個消費者只能消費所分配到的分區的消息,每一個分區只能被一個消費組中的一個消費者所消費,所以同一個消費組中消費者的數量如果超過了分區的數量,將會出現有些消費者分配不到消費的分區。消費組與消費者關系如下圖所示:

consumer group

Kafka Consumer Client 消費消息通常包含以下步驟:

  • 配置客戶端,創建消費者
  • 訂閱主題
  • 拉去消息并消費
  • 提交消費位移
  • 關閉消費者實例

過程

因為 Kafka 的 Consumer 客戶端是線程不安全的,為了保證線程安全,并提升消費性能,可以在 Consumer 端采用類似 Reactor 的線程模型來消費數據。

消費模型

Kafka consumer 參數

  • bootstrap.servers:連接 broker 地址,host:port 格式。
  • group.id:消費者隸屬的消費組。
  • key.deserializer:與生產者的key.serializer對應,key 的反序列化方式。
  • value.deserializer:與生產者的value.serializer對應,value 的反序列化方式。
  • session.timeout.ms:coordinator 檢測失敗的時間。默認 10s 該參數是 Consumer Group 主動檢測 (組內成員 comsummer) 崩潰的時間間隔,類似于心跳過期時間。
  • auto.offset.reset:該屬性指定了消費者在讀取一個沒有偏移量后者偏移量無效(消費者長時間失效當前的偏移量已經過時并且被刪除了)的分區的情況下,應該作何處理,默認值是 latest,也就是從最新記錄讀取數據(消費者啟動之后生成的記錄),另一個值是 earliest,意思是在偏移量無效的情況下,消費者從起始位置開始讀取數據。
  • enable.auto.commit:否自動提交位移,如果為false,則需要在程序中手動提交位移。對于精確到一次的語義,最好手動提交位移
  • fetch.max.bytes:單次拉取數據的最大字節數量
  • max.poll.records:單次 poll 調用返回的最大消息數,如果處理邏輯很輕量,可以適當提高該值。但是max.poll.records條數據需要在在 session.timeout.ms 這個時間內處理完 。默認值為 500
  • request.timeout.ms:一次請求響應的最長等待時間。如果在超時時間內未得到響應,kafka 要么重發這條消息,要么超過重試次數的情況下直接置為失敗。

Kafka Rebalance

rebalance 本質上是一種協議,規定了一個 consumer group 下的所有 consumer 如何達成一致來分配訂閱 topic 的每個分區。比如某個 group 下有 20 個 consumer,它訂閱了一個具有 100 個分區的 topic。正常情況下,Kafka 平均會為每個 consumer 分配 5 個分區。這個分配的過程就叫 rebalance。

什么時候 rebalance?

這也是經常被提及的一個問題。rebalance 的觸發條件有三種:

  • 組成員發生變更(新 consumer 加入組、已有 consumer 主動離開組或已有 consumer 崩潰了——這兩者的區別后面會談到)
  • 訂閱主題數發生變更
  • 訂閱主題的分區數發生變更

如何進行組內分區分配?

Kafka 默認提供了兩種分配策略:Range 和 Round-Robin。當然 Kafka 采用了可插拔式的分配策略,你可以創建自己的分配器以實現不同的分配策略。

kafka 高頻面試題

  • Kafka 有哪些命令行工具?你用過哪些?/bin目錄,管理 kafka 集群、管理 topic、生產和消費 kafka。
  • Kafka Producer 的執行過程?攔截器,序列化器,分區器和累加器。
  • Kafka Producer 有哪些常見配置?broker 配置,ack 配置,網絡和發送參數,壓縮參數,ack 參數。
  • 如何讓 Kafka 的消息有序?Kafka 在 Topic 級別本身是無序的,只有 partition 上才有序,所以為了保證處理順序,可以自定義分區器,將需順序處理的數據發送到同一個 partition。
  • Producer 如何保證數據發送不丟失?ack 機制,重試機制。
  • 如何提升 Producer 的性能?批量,異步,壓縮。
  • 如果同一 group 下 consumer 的數量大于 part 的數量,kafka 如何處理?多余的 Part 將處于無用狀態,不消費數據。
  • Kafka Consumer 是否是線程安全的?不安全,單線程消費,多線程處理。
  • 講一下你使用 Kafka Consumer 消費消息時的線程模型,為何如此設計?拉取和處理分離。
  • Kafka Consumer 的常見配置?broker, 網絡和拉取參數,心跳參數。
  • Consumer 什么時候會被踢出集群?奔潰,網絡異常,處理時間過長提交位移超時。
  • 當有 Consumer 加入或退出時,Kafka 會作何反應?進行 Rebalance。
  • 什么是 Rebalance,何時會發生 Rebalance?topic 變化,consumer 變化。
責任編輯:姜華 來源: 碼哥字節
相關推薦

2021-12-30 22:50:32

KafkaConsumer 源碼

2022-11-14 00:21:07

KafkaRebalance業務

2024-07-02 11:51:13

2020-09-30 14:07:05

Kafka心跳機制API

2022-10-31 09:30:32

kafkaconsumer服務端

2023-11-27 17:29:43

Kafka全局順序性

2023-06-01 08:08:38

kafka消費者分區策略

2025-01-03 08:44:37

kafka消息發送策略

2023-10-13 10:44:35

OC消息發送

2022-06-27 11:04:24

RocketMQ順序消息

2011-05-31 11:55:00

Android 消息機制

2020-11-13 10:58:24

Kafka

2021-02-24 08:38:48

Kafka消息Consumer

2020-04-17 14:49:34

Kafka分區數據

2023-05-15 08:24:46

2021-11-03 10:52:39

數據庫

2021-07-08 05:52:34

Kafka架構主從架構

2023-11-07 12:09:44

TopicKafka

2025-04-16 00:00:00

2021-04-07 08:43:09

SpringBootRocketMQ開發技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品自产拍 | 人人射人人 | 欧美一二区 | 91视频免费在观看 | 91看片在线| 欧美日韩高清 | 久久国产精品久久久久久久久久 | 国产精品久久久久aaaa九色 | 日韩综合网 | 久久久久国产精品一区三寸 | 亚洲国产精品日本 | 国产97色| 伊人网伊人 | 天天干视频网 | 国产综合精品一区二区三区 | 成年人网站国产 | 色必久久| 97偷拍视频 | 精品国产一区二区在线 | 欧美成人免费在线视频 | 日韩在线不卡 | 亚洲国产精品va在线看黑人 | 久久激情视频 | 综合天天久久 | 亚洲色图综合 | 久久精品在线播放 | 中文字幕亚洲视频 | 国产高清久久久 | 久久国产欧美日韩精品 | 91天堂网| 午夜羞羞 | 久久精品中文字幕 | 一区二区免费视频 | 久久在线视频 | 国精日本亚洲欧州国产中文久久 | 国产精品一区二区久久久久 | 国产一区二区三区不卡av | 亚洲国产精品一区二区三区 | 男人的天堂在线视频 | 亚洲精品免费视频 | 日日操夜夜操视频 |