pykafka的使用心得

一、kafka常見名稱:broker、cluster、producer、consumer、partition、group

  • broker:節點,說直白點就是kafka服務部署時使用的服務器數量,eg.一臺服務器就是一個節點,以此類推
  • cluster:集羣,也就是部署的一整套多節點、高可用的kafka環境,對外提供的host如:10.1.254.35:9092,10.1.254.36.9092,10.1.254.37.9092這樣的
  • producer:生產者,即生產數據到kafka的一方
  • consumer:消費者,即將數據從kafka取出的一方
  • partition:分區,即生產到kafka的數據存儲位置
  • group:消費組,也就是給消費者分的組別

二、partition和consumer、group的關係

1、一個group,consumer數量大於partition時

kafka中的partiton與consumer的對應關係圖1

如圖1,向test發送消息:1,2, 3,4,5,6,7,8,9
只有C1能接收到消息,C2則不能接收到消息,即同一個partition內的消息只能被同一個組中的一個consumer消費。當消費者數量多於partition的數量時,多餘的消費者空閒。
也就是說如果只有一個partition,你在同一組啓動多少個consumer都沒用,partition的數量決定了此topic在同一組中可被均衡的程度,例如partition=4,則可被同一組中最多4個consumer均衡消費。

2、一個group,consumer少於或等於partition時

kafka中的partition與consumer的對應關係圖2

如圖2,consumer數量爲2,小於partition的數量3,此時,向test2發送消息1,2,3,4,5,6,7,8,9
C1接收到1,3,4,6,7,9
C2接收到2,5,8
此時P1、P2對應C1,即多個partition對應一個消費者,C1接收到消息量是C2的兩倍

3、多個group

kafka中的partition與consumer的對應關係圖3

如圖3,向test2發送消息1,2,3,4,5,6,7,8,9
g3組:
C1接收到了:2,5,8
C2接收到了:3,6,9
C3接收到了:1,4,7
g4組:
C1接收到了:1,2,3,4,5,6,7,8,9
  • 由此可知,啓動多個組,則會使同一個消息被消費多次

三、其他內容敬請期待…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章