Kafka基礎架構
消息隊列的兩種模式
1. 點對點模式(一對一,消費者主動拉取數據,消息收到後消息清除)
-
過程:
- producer將消息發送到queue中;
- consumer從queue中拉取並消費message;
- message從queue中刪除
-
特點:
- 一個queue可以有多個consumer;
- 一個message只會被一個consumer消費;
2. 發佈/訂閱模式(一對多,消費者消費消息之後消息不會被清除)
-
過程:
- producer將message發佈到topic中;
- 多個consumer同事消費該message;
-
特點:
- topic 中的message會被所有訂閱的consumer消費
Kafka架構
基本介紹
- Producer :消息生產者,就是向 Kafka broker 發消息的客戶端。
- Consumer :消息消費者,向 Kafka broker 消費消息的客戶端。
- Topic :可以理解爲一個隊列,生產者和消費者面向的都是topic。
- Broker : Kafka服務器
- 一個集羣由多個 broker 組成;
- 一個 broker 可以容納多個 topic。
- Partition: 分區
- 爲了實現擴展性,一個大的 topic可以分佈到多個 broker上;
- 一個 topic可以分爲多個partition,每個partition都是一個有序的隊列。
- Consumer Group (CG): 消費者組
- 一個消費者組由多個 consumer 組成;
- 同一個消費者組內不同消費者負責消費不同分區的數據;
- 一個分區同時只能由一個消費者組內的一個消費者消費;
- 消費者組之間互不影響;
- 每一個消費者都屬於某個消費者組;
- 消費者組是一個邏輯上的訂閱者;
- Replica:副本
- 爲保證集羣中的某個節點發生故障時,該節點上的 partition 數據不丟失,且 kafka仍然能夠繼續工作,kafka 提供了副本機制;
- 一個 topic 的每個分區都有若干個副本, 即一個分區由一個 leader 和若干個follower組成;
- leader:每個分區多個副本的“主”,生產者發送數據的對象,以及消費者消費數據的對象都是leader。
- follower:每個分區多個副本中的“從”,實時從 leader 中同步數據,保持和 leader 數據 的同步。leader 發生故障時,某個 follower 會成爲新的 leader,同一個partition的leader和follower不會存在於同一個Broker。
- zookeeper:存儲Kafka集羣信息,幫助管理集羣;存儲消費者的位置信息;(0.9版本之前位置信息存儲在zookeeper,0.9版本之後位置信息存儲在kafka集羣磁盤中,默認保存7天)