Kafka的Topic的partitions數目設置最佳實踐

前言

翻譯加整理~
How to choose the number of topics/partitions in a Kafka cluster

如何確定Topic需要多少個Partitions

一般情況是數據吞吐決定,這里的吞吐的單位是MB/s,這里暫時不考慮kafka服務端的單partition的吞吐瓶頸,而是考慮Producer和Consumer兩端的吞吐

Producer

生產者的吞吐和以下幾個配置有關:

  1. batching size
  2. compression codec
  3. acks
  4. replication factor

一般情況下,一個Producer的吞吐在10MB/s左右

Consumer

Consumer的吞吐和用戶邏輯強相關,所以需要consumer的業務邏輯實現方來評估consumer的吞吐能力

確定partition數目

Given:

  1. p : producer throughput in MB/S
  2. c : consumer throughput in MB/s
  3. t : overall throughtput in MB/s

Result:

NumOfPartition = max(t/p, t/c)

動態增加Partitions

Partition是可以動態增加的,但是需要盡量在業務接入最初,對parttion數目做準確評估,因為不是所有的業務場景都適合做動態增加Partition數目操作。 對于Keyed messge, 可以配置消息會按照key的hash值做partition的路由,這也保證了相同的key的消息的消費是保序的。如果動態增加partition數目,可能會導致亂序問題。 對于這樣的業務場景,一個安全的擴容方案是先停掉所有的producer, consumer全部消費完數據后,再做 add partition操作,然后在恢復producer的寫入

partition數目過多帶來的問題

  1. 增加open file handles
  2. 增加Broker宕機恢復時間
  3. 增加延遲

對每臺Broker來說,partition的數目不應該超過 100 * (num of brokers in cluster) * (replication-factor), 對于個10臺broker,replication-factor=2的集群,單機partition的數目不應該超過 2000個~

結論

確定Topic的一個合適的Partition數目很重要,太少了, producer或者consumer會出現讀寫平靜,太多了,會引起其他問題

參考文章

How to choose the number of topics/partitions in a Kafka cluster

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景介紹 Kafka簡介 Kafka是一種分布式的,基于發布/訂閱的消息系統。主要設計目標如下: 以時間復雜度為O...
    高廣超閱讀 12,879評論 8 167
  • 本文轉載自http://dataunion.org/?p=9307 背景介紹Kafka簡介Kafka是一種分布式的...
    Bottle丶Fish閱讀 5,491評論 0 34
  • 目標 高吞吐量來支持高容量的事件流處理 支持從離線系統加載數據 低延遲的消息系統 持久化 依賴文件系統,持久化到本...
    jiangmo閱讀 1,320評論 0 4
  • 2018年11月16日 周五 晴 今天又到周五了,一周的課又上完了。下午放學后在店里待...
    糖果屋MM閱讀 177評論 0 0
  • 2018.11.05-2018.11.07 關于昨天的事情,表示遺憾,我想變得有錢,不是因為我愛金錢,而是因為變得...
    曼本竹心llm不良帥閱讀 213評論 0 0