目錄:
- Kafka Broker和集群
- Kafka主題和分區
- Kafka Producer和Consumer
Kafka Broker和集群:
1、Broker:一個獨立的Kafka服務器被稱為broker,它用於接收生產者的消息,並設置消息的偏移量,還會把消息保存到磁盤中。
2、集群:多個Kafka實例組成Kafka集群,每個實例都被稱為broker。其中每個Kafka集群中都會有一個節點被選為領導節點,也叫做broker中央控制器。
broker中央控制器的主要工作:
- 管理整個集群的分區:當某個topic增加分區數量的時候,由中央控制器管理重新分配分區的工作。
- 監控副本的狀態:
- leader副本故障時,由中央控制器重新為改partition選舉新的leader副本。
- 當檢測到同步列表發生變化時,由中央控制器通知所有broker更新其緩存的元數據。
broker中央控制器選舉過程:每個Kafka啟動的時候都會創建一個KafkaController對象,但集群中只能有一個leader。Kafka的做法是每個KafkaController都會去指定的zookeeper路徑下創建臨時節點,只有第一個成功創建的才能成為leader節點,其余的都是follower。當leader節點發生故障時,所有的follower節點都會都到通知,然后去競爭在改路徑下創建節點,從而選舉出新的leader節點。
Kafka主題和分區:
1、主題:數據記錄發布的地方,可以用來區分業務系統。Kafka中的Topic是多訂閱者模式,一個topic可以擁有一個或多個消費者來訂閱它。
2、分區:對於每個topic,Kafka集群都會有一個或多個分區。分區的角色分為leader分區和follower分區,每個分區都是有序且順序不便的數據集,並且不斷的追加到結構化的log文件中。
Kafka Producer和Consumer:
生產者發送模式:
- 同步(synchronize):調用send方法發送消息后會返回一個Future對象,可以通過Future對象知道消息是否發送成功(Kafka默認同步,即producer.type=sync)。
- 異步(asynchronize):調用send方法並制定一個回調函數,服務器再響應時調用該函數。
- 發送后就不管了(OneWay):消息發給服務器,不關心是否正常到達。