消息隊列是生產者向消息隊列發送消息,消費者從消息隊列拉取(pull)消息。
-
生產者
生產者是消息隊列的數據源,可以向其發送消息,如字符串、二進制數據等。 -
消費者
消費者的數據源就是Kafka,於是通過Kafka實現了生產者和消費者兩個系統的解耦。 -
broker
部署了Kafka的server稱爲broker。Kafka分佈式部署就有多臺broker。 -
主題topic
- topic是字符串,它將消息進行分類、存儲
- 多個生產者可以向同一個topic發送消息
- 多個消費者可以訂閱同一個topic
- 每一條消息一定屬於某一個topic
- 一個topic可以包含多個消息
- 通過topic可以實現生產者和消費者之間有針對性的發送和訂閱
- 消息
- 消息必須指定屬於哪個topic
- 由key和value構成。key用來將消息分配到topic的指定分區中。
-
Kafka集羣
由多臺broker組成,它們之間通過心跳檢測其他機器狀態。 -
控制器
- 多臺broker中會有一臺broker作爲控制器,它管理Kafka的分區、副本等。
- 其他borker會監聽控制器的狀態,當前控制器異常時會使用選舉算法選出新的控制權。
- 消費者組
- 一個消費者只能屬於一個消費者組
- 單播:消費者組所訂閱的topic只能由其中的一個消費者消費。訂閱同一topic的多個消費者組互不影響。
- 廣播:多個消費者消費同一個topic,那它們一定屬於不同的消費者組。