Kafka - 第三章 | Apache Kafka 集群架構
S.No | 組件和說明 |
---|---|
1 | Broker(代理)Kafka集群通常由多個代理組成以保持負載平衡。 Kafka代理是無狀態的,所以他們使用ZooKeeper來維護它們的集群狀態。一個Kafka代理實例可以每秒處理數十萬次讀取和寫入,每個Broker可以處理TB的消息,而沒有性能影響。 Kafka經紀人領導選舉可以由ZooKeeper完成。 |
2 | ZooKeeper ZooKeeper用於管理和協調Kafka代理。 ZooKeeper服務主要用於通知生產者和消費者Kafka系統中存在任何新代理或Kafka系統中代理失敗。根據Zookeeper接收到關於代理的存在或失敗的通知,然後生產者和消費者採取決定並開始與某些其他代理協調他們的任務。 |
3 | Producers(生產者)生產者將數據推送給經紀人。當新代理啟動時,所有生產者搜索它並自動向該新代理髮送消息。 Kafka生產者不等待來自代理的確認,並且發送消息的速度與代理可以處理的一樣快。 |
4 | Consumers(消費者)因為Kafka代理是無狀態的,這意味著消費者必須通過使用分區偏移來維護已經消耗了多少消息。如果消費者確認特定的消息偏移,則意味著消費者已經消費了所有先前的消息。消費者向代理髮出異步拉取請求,以具有準備好消耗的字節緩衝區。消費者可以簡單地通過提供偏移值來快退或跳到分區中的任何點。消費者偏移值由ZooKeeper通知。 |
註:在
0.10
版本後,Kafka
把這個Offset
的保存,從ZK
中剝離,保存在一個名叫consumeroffsets topic
的Topic
中。