Kafka如何設定Topic分區數

更新時間:
Copy as MD

雲訊息佇列 Kafka 版Topic分區數過多或過少,都有可能對服務的效能和穩定性產生影響,本文為您介紹如何設定合理的Topic分區數。

背景資訊

雲訊息佇列 Kafka 版的儲存和協調機制是以分區為粒度的,每個Topic由一個或多個分區組成,Topic的分區數設定不合理可能造成下列問題:

  • 分區數過多

    • 會導致儲存片段化嚴重,叢集效能和穩定性都會急劇下降。

    • 會導致監控每個分區的健康狀態變得複雜,故障排查成本增加。

  • 分區數過少

    • 生產者的並發寫入能力受限,導致整體輸送量不足。

    • 當消費者數量超過分區數時,部分消費者無法分配到分區,導致資源浪費。

  • 沒有按照推薦的倍數設定分區數

    • 會導致分區未均勻分布在所有計算節點上,從而使某些節點的負載遠高於其他節點,可能會造成Topic分區傾斜的問題。

Topic分區數

Topic分區數的確定基於實際業務的輸送量,還需要綜合考慮以下兩點:

考慮點

建議

說明

執行個體建議的倍數

  • Serverless執行個體: 分區數是3的倍數

  • Serverless執行個體: 分區數是12的倍數

基於實際業務的輸送量,按照執行個體類型選擇312倍數的分區數,盡量讓分區均勻分布在所有計算節點上,減少Topic分區傾斜的風險。

消費者數量

分區數是消費者數量的整數倍

由於一個分區在一個消費者組內只能被一個消費者消費,當分區數是消費者的數量的整數倍,可以保證每個消費者負責消費的分區數量是一致的,避免出現Topic分區傾斜。

設定Topic分區數

  1. 登入雲訊息佇列 Kafka 版控制台,在概览頁面的资源分布地區,選擇地區。

  2. 实例列表頁面,單擊目標執行個體名稱。

  3. 在左側導覽列,單擊Topic 管理

  4. 根據下面操作設定Topic分區數。

    Serverless執行個體

    • 建立Topic

      1. Topic 管理頁面,單擊创建 Topic

      2. 创建 Topic面板,設定Topic名稱、Topic分區數等屬性,然後單擊确定

    • 編輯Topic

      1. Topic 管理頁面,單擊需要編輯的Topic名稱。

      2. Topic 详情頁面的基础信息地區,單擊分区副本数後面的编辑

      3. 编辑分区面板,輸入分區數,然後單擊确定

    Serverless執行個體

    • 建立Topic

      1. Topic 管理頁面,單擊创建 Topic

      2. 创建 Topic面板,設定Topic名稱、Topic分區數等屬性,然後單擊确定

    • 編輯Topic

      1. Topic 管理頁面,單擊需要編輯的Topic名稱。

      2. Topic 详情頁面,單擊配置信息頁簽,然後單擊分区数後面的增加分区数

      3. 增加分区数面板,輸入分區數,然後單擊确定

相關文檔