Kafka 如何確定分割槽數量

進行分割槽數量配置時需考慮如下幾個因素:

主題需要達到多大的吞吐量?例如,是希望每秒寫入 100KB 還是 1GB?

從單個分割槽讀取資料的最大吞吐量是多少?每一個分割槽一般都會有一個消費者,如果知道消費者處理資料或將資料寫入資料庫的速度不會超過每秒 50MB,那麼也應該知道,從一個分割槽讀取資料的吞吐量不需要超過每秒 50MB。

可以透過類似的方法估算生產者向單個分割槽寫入資料的吞吐量,不過生產者的速度一般比消費者快得多,所以最好為生產者多估算一些吞吐量。

每個 broker 包含的分割槽個數、可用磁碟空間和網路頻寬。

如果訊息是按照不同的鍵來寫入分割槽的,那麼為已有的主題新增分割槽就會很困難。

單個 broker 對分割槽個數是有限制的,因為分割槽越多,佔用的記憶體越多,完成首領選舉需要的時間也越長。

綜合考慮以上因素,Kafka 主題需要很多分割槽,但不能太多。如果估算出主題的吞吐量和消費者吞吐量,可以用主題吞吐量除以消費者吞吐量算出分割槽的個數。

如果每秒要從主題上寫入和讀取 1GB的資料,並且每個消費者每秒鐘可以處理 50MB的資料,那麼至少需要 20 個分割槽。這樣就可以讓 20 個消費者同時讀取這些分割槽,從而達到每秒 1GB的吞吐量。

Kafka 主題的分割槽數量只能增加,不能減少。

原文:https://www。xbases。org/article。html?id=QXJ0aWNsZU5vZGU6MTE%3D

TAG: 分割槽吞吐量寫入每秒主題