Kafka如何設定Topic分區數
雲訊息佇列 Kafka 版Topic分區數過多或過少,都有可能對服務的效能和穩定性產生影響,本文為您介紹如何設定合理的Topic分區數。
背景資訊
雲訊息佇列 Kafka 版的儲存和協調機制是以分區為粒度的,每個Topic由一個或多個分區組成,Topic的分區數設定不合理可能造成下列問題:
分區數過多
會導致儲存片段化嚴重,叢集效能和穩定性都會急劇下降。
會導致監控每個分區的健康狀態變得複雜,故障排查成本增加。
分區數過少
生產者的並發寫入能力受限,導致整體輸送量不足。
當消費者數量超過分區數時,部分消費者無法分配到分區,導致資源浪費。
沒有按照推薦的倍數設定分區數
會導致分區未均勻分布在所有計算節點上,從而使某些節點的負載遠高於其他節點,可能會造成Topic分區傾斜的問題。
Topic分區數
Topic分區數的確定基於實際業務的輸送量,還需要綜合考慮以下兩點:
考慮點 | 建議 | 說明 |
執行個體建議的倍數 |
| 基於實際業務的輸送量,按照執行個體類型選擇3或12倍數的分區數,盡量讓分區均勻分布在所有計算節點上,減少Topic分區傾斜的風險。 |
消費者數量 | 分區數是消費者數量的整數倍 | 由於一個分區在一個消費者組內只能被一個消費者消費,當分區數是消費者的數量的整數倍,可以保證每個消費者負責消費的分區數量是一致的,避免出現Topic分區傾斜。 |
設定Topic分區數
登入雲訊息佇列 Kafka 版控制台,在概览頁面的资源分布地區,選擇地區。
在实例列表頁面,單擊目標執行個體名稱。
在左側導覽列,單擊Topic 管理。
根據下面操作設定Topic分區數。
Serverless執行個體
建立Topic
在Topic 管理頁面,單擊创建 Topic。
在创建 Topic面板,設定Topic名稱、Topic分區數等屬性,然後單擊确定。
編輯Topic
在Topic 管理頁面,單擊需要編輯的Topic名稱。
在Topic 详情頁面的基础信息地區,單擊分区副本数後面的编辑。
在编辑分区面板,輸入分區數,然後單擊确定。
非Serverless執行個體
建立Topic
在Topic 管理頁面,單擊创建 Topic。
在创建 Topic面板,設定Topic名稱、Topic分區數等屬性,然後單擊确定。
編輯Topic
在Topic 管理頁面,單擊需要編輯的Topic名稱。
在Topic 详情頁面,單擊配置信息頁簽,然後單擊分区数後面的增加分区数。
在增加分区数面板,輸入分區數,然後單擊确定。