1. 程式人生 > >Kafka的partions和replication-factor參數的理解

Kafka的partions和replication-factor參數的理解

style 通過 消費 tex kit 日誌 由於 不能 color

Topic在Kafka中是主題的意思,生產者將消息發送到主題,消費者再訂閱相關的主題,並從主題上拉取消息。

在創建Topic的時候,有兩個參數是需要填寫的,那就是partions和replication-factor。

partions

  主題分區數。kafka通過分區策略,將不同的分區分配在一個集群中的broker上,一般會分散在不同的broker上,當只有一個broker時,所有的分區就只分配到該Broker上。

消息會通過負載均衡發布到不同的分區上,消費者會監測偏移量來獲取哪個分區有新數據,從而從該分區上拉取消息數據。

分區數越多,在一定程度上會提升消息處理的吞吐量,因為kafka是基於文件進行讀寫,因此也需要打開更多的文件句柄,也會增加一定的性能開銷。

如果分區過多,那麽日誌分段也會很多,寫的時候由於是批量寫,其實就會變成隨機寫了,隨機 I/O 這個時候對性能影響很大。所以一般來說 Kafka 不能有太多的 Partition。

下圖設置topic-1的partions為3,會自動分配在不同的broker上,采用均勻分配策略,當broker和partions一樣時,就均勻分布在不同的broker上。

技術分享圖片

replication-factor

  用來設置主題的副本數。每個主題可以有多個副本,副本位於集群中不同的broker上,也就是說副本的數量不能超過broker的數量,否則創建主題時會失敗。

比如partions 設置為20,replicationFactor設置為1. Broker為2.可以看出,分區會均勻在broker

上進行分配。

技術分享圖片

比如partions 設置為10,replicationFactor設置為2. Broker為2.每個broker都有副本存在。

技術分享圖片

Kafka的partions和replication-factor參數的理解