Kafka Consumer ç Rebalance æºå¶-åæé¾æ¥
Kafka Consumer ç Rebalance æºå¶-åæé¾æ¥
Kafka Consumer ç Rebalance æºå¶-åæé¾æ¥
ä¸å¨åå äº Kafka Meetup å京ç«çææ¯åäº«ï¼æ¬æç®åä»ç»ä¸ Kafka Consumer ç Rebalance æºå¶ä»¥åå ¶æ°çæ¬ä¸çä¼åçç¥~
Kafka ä¹åçæ¬ç Consumer Groups
Consumer Group
å¦ä¸å¾æç¤ºï¼
Consumer
使ç¨
Consumer Group
åç§°æ è®°èªå·±ï¼å¹¶ä¸åå¸å°ä¸»é¢çæ¯æ¡è®°å½é½ä¼ä¼ éå°æ¯ä¸ªè®¢é
æ¶è´¹è
ç»ä¸çä¸ä¸ª
Consumer
å®ä¾ã
Consumer
å®ä¾å¯ä»¥å¨åç¬çè¿ç¨ä¸æå¨åç¬çæºå¨ä¸ã
妿ææ
Consumer
å®ä¾é½å±äºåä¸ä¸ª
Consumer Group
ï¼é£ä¹è¿äº
Consumer
å®ä¾å°å¹³è¡¡åè´è½½çæ¹å¼æ¥æ¶è´¹
Kafka
ã
妿ææ
Consumer
å®ä¾å
·æä¸åç
Consumer Group
ï¼åæ¯æ¡è®°å½å°å¹¿æå°ææ
Consumer
è¿ç¨ã
Group Coordinator
Group Coordinator
æ¯ä¸ä¸ªæå¡ï¼æ¯ä¸ª
Broker
å¨å¯å¨çæ¶åé½ä¼å¯å¨ä¸ä¸ªè¯¥æå¡ã
Group Coordinator
çä½ç¨æ¯ç¨æ¥åå¨
Group
çç¸å
³
Meta
ä¿¡æ¯ï¼å¹¶å°å¯¹åº
Partition
ç
Offset
ä¿¡æ¯è®°å½å°
Kafka
å
ç½®
Topic(__consumer_offsets)
ä¸ã
Kafka
å¨ 0.9 ä¹åæ¯åºäº
Zookeeper
æ¥åå¨
Partition
ç
Offset
ä¿¡æ¯
(consumers/{group}/offsets/{topic}/{partition})
ï¼å 为
Zookeeper
å¹¶ä¸éç¨äºé¢ç¹çåæä½ï¼æä»¥å¨ 0.9 ä¹åéè¿å
ç½®
Topic
çæ¹å¼æ¥è®°å½å¯¹åº
Partition
ç
Offset
ãå¦ä¸å¾æç¤ºï¼
å¨
Kafka 0.8.2
ä¹åæ¯è¿æ ·ç
ä¹åæ¯è¿æ ·çï¼
æ¯ä¸ª
Group
é½ä¼éæ©ä¸ä¸ª
Coordinator
æ¥å®æèªå·±ç»å
å
Partition
ç
Offset
ä¿¡æ¯ï¼éæ©çè§åå¦ä¸ï¼
Group
对åºå¨
__consumer_offsets
ä¸ç
Partition
Partition计ç®è§åï¼
partition-Id(__consumer_offsets) = Math.abs(groupId.hashCode() % groupMetadataTopicPartitionCount)
å¤å¶ä»£ç
å
¶ä¸
groupMetadataTopicPartitionCount
对åº
offsets.topic.num.partitions
åæ°å¼ï¼é»è®¤å¼æ¯ 50 个ååº
Consumer Rebalance Protocol
åç rebalance çæ¶æº
consumer
å®ä¾å å
¥è¯¥æ¶è´¹ç»æè
离å¼ç»ã
Topic
个æ°åçååã
Topic
çååºæ°åçååã
æ¶è´¹è è¿ç¨ææçæ åµ
session
è¿æ
heartbeat
è¿æ
Rebalance
åçæ¶ï¼
Group
䏿æ
Consumer
å®ä¾é½ä¼åè°å¨ä¸èµ·å
±ååä¸ï¼
Kafka
è½å¤ä¿è¯å°½éè¾¾å°æå
¬å¹³çåé
ã使¯
Rebalance
è¿ç¨å¯¹
Consumer Group
ä¼é ææ¯è¾ä¸¥éçå½±åãå¨
Rebalance
çè¿ç¨ä¸
Consumer Group
ä¸çæææ¶è´¹è
å®ä¾é½ä¼åæ¢å·¥ä½ï¼çå¾
Rebalance
è¿ç¨å®æã
æ¶è´¹è ç Rebalance åè®®
Rebalance åçåçæ§è¡è¿ç¨
1ï¼ææ°ç
Consumer
å å
¥
Consumer Group
2ï¼ä»
Consumer Group
éåº
leader
3ï¼
leader
è¿è¡ååºçåé
Issues
Known Issue #1: Stop-the-world Rebalance
å¦ä¸å¾æç¤ºï¼ä¹åçæ¬ç
Kafka
å¨åç
Rebalance
æ¶åä¼éæ¾
Consumer Group
çææèµæºï¼é ææ¯è¾é¿ç
Stop-the-world
Known Issue #2: Back-and-forth Rebalance
å¦ä¸å¾æç¤ºï¼å¨åç
Rebalance
çæ¶ååççä¸å¿
è¦çèµæºéæ¾ä¸éæ°åé
ã
å½åç Rebalance ä¸ æ¹è¿åç ReBalance 对æ¯
æ¸è¿å¼ Rebalance åè®®
å¦ä¸å¾æç¤ºï¼æ°çæ¸è¿å¼ Rebalance åè®®ï¼å¨ Rebalance çæ¶åä¸éè¦å½åææç Consumer éæ¾ææ¥æçèµæºï¼èæ¯å½éè¦è§¦å Rebalance çæ¶å对å½åèµæºè¿è¡ç»è®°ï¼ç¶åè¿è¡æ¸è¿å¼ç Rebalanceã è¿æ ·å产ççä¼åææ