對於雲訊息佇列 Confluent 版叢集來說,影響資源使用的因素眾多,包括使用的業務情境、商務應用程式效能等,本文結合一般情境給出雲訊息佇列 Confluent 版叢集資源評估參考建議,協助您在購買建立叢集時評估叢集規模。在叢集建立完成後,您仍然可以根據實際的資源使用率進行叢集擴容來變更集群的資源配置。
組成架構
雲訊息佇列 Confluent 版是一個流資料平台,能夠組織管理來自不同資料來源的資料,是一個穩定高效的系統。如下圖所示,它由七個組件構成,分別為Kafka Broker、KafkaRestProxy、Connect、Zookeeper、KsqlDB、ControlCenter、SchemaRegistry。
預設情況下,雲訊息佇列 Confluent 版叢集Kafka Broker、KafkaRestProxy、Connect、Zookeeper、KsqlDB、ControlCenter、SchemaRegistry組件的副本數為3、2、2、3、2、1、2,您也可以根據實際的業務需求設定合適的副本數量。
叢集資源評估
Kafka Broker資源評估
首先,需要評估您的業務需求,需求參數由下表列出。
需求參數
參數說明
扇出因子
寫入的資料會被consumer消費多少次,其中不包含Broker內部副本的複製流量。
資料峰值流入
業務資料的峰值流量,單位:MB/s。
資料平均流入
業務資料的平均流量,單位:MB/s。
資料保留時間長度
資料保留時間長度,預設7天。
分區副本因子
分區副本因子,預設為3,即每個分區具有3個副本。
估算Broker的節點數:理想情況下,單個Kafka Broker最大能夠支援100 MB/s的流量;建議生產叢集至少需要4個Broker節點數,並保留50%的IO頻寬資源冗餘。此外,從分區副本限制考慮,每個Broker不應超過2000個分區副本;整個叢集不應超過200,000個分區副本。如果預估叢集總分區副本數量會比較多,建議您從總分區數來評估所需Broker的節點數。
說明Broker節點數 = Max(4,資料峰值流入 * (扇出因子 + 2 * 分區副本因子-1) * 2 / 400 MB/s)。
估算每個Broker的CU數量:由於所需CU數量與叢集配置、用戶端配置及其使用方式、分區數量、叢集規模、Consumer個數、Producer個數等都有關係,難以估算。建議您建立生產叢集時,每個Broker使用8 CU以上每Broker的配置,開發測試叢集使用4 CU每Broker的配置。同時,建議您每4 CU的Broker上不應超過100個leader副本或300個分區副本(包含leader副本)。
估算每個Broker的磁碟大小:每個Broker的磁碟大小 = Max(1TB,資料平均流入 * 資料保留時間長度 * 分區副本因子 / Broker節點數)。
叢集資源評估
Kafka Broker資源評估
首先,需要評估您的業務需求,需求參數由下表列出。
需求參數
參數說明
扇出因子
寫入的資料會被consumer消費多少次,其中不包含Broker內部副本的複製流量。
資料峰值流入
業務資料的峰值流量,單位:MB/s。
資料平均流入
業務資料的平均流量,單位:MB/s。
資料保留時間長度
資料保留時間長度,預設7天。
分區副本因子
分區副本因子,預設為3,即每個分區具有3個副本。
估算Broker的節點數:理想情況下,單個Kafka Broker最大能夠支援100 MB/s的流量;建議生產叢集至少需要3個Broker節點數,並保留50%的IO頻寬資源冗餘。此外,從分區副本限制考慮,每個Broker不應超過2000個分區副本;整個叢集不應超過200,000個分區副本。如果預估叢集總分區副本數量會比較多,建議您從總分區數來評估所需Broker的節點數。
說明Broker節點數 = Max(3,資料峰值流入 * (扇出因子 + 2 * 分區副本因子-1) * 2 / 300 MB/s)。
估算每個Broker的CU數量:由於所需CU數量與叢集配置、用戶端配置及其使用方式、分區數量、叢集規模、Consumer個數、Producer個數等都有關係,難以估算。建議您建立生產叢集時,每個Broker使用8 CU以上每Broker的配置,開發測試叢集使用4 CU每Broker的配置。同時,建議您每4 CU的Broker上不應超過100個leader副本或300個分區副本(包含leader副本)。
估算每個Broker的磁碟大小:每個Broker的磁碟大小 = Max(1TB,資料平均流入 * 資料保留時間長度 * 分區副本因子 / Broker節點數)。
Connect資源評估
節點數評估:建議選擇2個節點以上以保證Connect為高可用的。
CU評估:建議選擇每個節點8 CU以上。
SchemaRegistry資源評估
SchemaRegistry生產環境建議配置2個節點,每個節點2 CU。
ControlCenter資源評估
ControlCenter生產環境建議配置1個節點,計算資源為4 CU以上,資料存放區300 GB以上。
KsqlDB資源評估
節點數評估:建議選擇2個節點以上以保證KafkaRestProxy為高可用的。
CU評估:建議選擇每個節點5 CU以上。
儲存評估:KsqlDB的儲存大小依賴於彙總語句以及並發查詢的數量,預設選擇100 GB。
KafkaRestProxy資源評估
節點數評估:建議選擇2個節點以上以保證KafkaRestProxy為高可用的。
CU評估:如果您需要通過KafkaRestProxy進行訊息的持續生產和消費,您需要選擇每個節點8 CU以上;否則,您可以選擇每個節點4 CU。
叢集資源效能對比
下表展示了不同CU個數下,叢集的總輸送量變化,以及單個Producer時延變化。您可以根據業務的資料流量以及時延要求,選擇合適的叢集CU個數。
以下測試結論在4 Broker規格叢集、單Topic、300 Partion、60 Producer、單條訊息大小1 KB的測試條件下獲得,實際業務情境與測試環境可能存在一定的效能差異。
叢集規格 | 不限流條件下, 叢集總輸送量 | 不限流條件下, Producer平均輸送量 | 不限流條件下, 平均時延 | 時延小於100ms條件下, 叢集總輸送量 |
單Broker 4 CU | 370 MB/s | 5.95 MB/s | 9718 ms | 130 MB/s |
單Broker 8 CU | 400 MB/s | 7.33 MB/s | 8351 ms | 195 MB/s |
單Broker 12 CU | 400 MB/s | 7.39 MB/s | 8343 ms | 240 MB/s |
單Broker 16 CU | 400 MB/s | 7.47 MB/s | 8335 ms | 290 MB/s |
單Broker 20 CU | 400 MB/s | 7.58 MB/s | 8237 ms | 305 MB/s |
預設情況下,雲訊息佇列 Confluent 版叢集為4 Broker規格,具備400 MB/s輸送量的叢集效能。如果您希望增加叢集的輸送量效能,可以對叢集進行水平擴容。每新增加一個Broker,叢集輸送量效能增加100 MB/s。
建議您在水平增加Broker時,為每個Broker配置8 CU及以上的計算資源,從而保證CU數不會成為影響叢集輸送量效能的瓶頸因素。
下表列出了不同Broker個數下,對應的叢集輸送量效能、訊息處理能力,以及能夠支援的Partion數量。
叢集規格 | 叢集輸送量 | 每小時處理訊息數 | 保證每個Partion輸送量1MB/s,能夠支援Partion數 |
4 Broker | 400 MB/s | 14.7億條 | 400個 |
8 Broker | 800 MB/s | 29.5億條 | 800個 |
12 Broker | 1200 MB/s | 44.2億條 | 1200個 |
16 Broker | 1600 MB/s | 59億條 | 1600個 |
20 Broker | 2000 MB/s | 73.7億條 | 2000個 |
通常情境下,Partion輸送量建議值在1 MB/s ~ 5 MB/s;對於低延遲需求的情境,應該限制每個Partion的輸送量大小。當Partion數達到一定數量時,叢集輸送量會下降,時延增加。
叢集規格選擇建議
以下給出典型情境下的叢集規格建議,您也可以參考Confluent官網指導文檔。
使用情境 | 建議生產環境使用 | 建議測試環境使用 | ||||
叢集規格 | 生產規格(400MB/s吞吐,不含複製流量) | 最小規格(300MB/s吞吐,不含複製流量) | ||||
配置指標 | CU | Disk | Nodes | CU | Disk | Nodes |
Kafka Broker | 12 | 2400 GB | 4 | 4 | 800 GB | 3 |
Zookeeper | 4 | 100 GB | 3 | 2 | 100 GB | 3 |
Connect | 12 | N/A | 2 | 4 | N/A | 2 |
ControlCenter | 12 | 300 GB | 1 | 4 | 300 GB | 1 |
SchemaRegistry | 2 | N/A | 2 | 2 | N/A | 2 |
KafkaRestProxy | 16 | N/A | 2 | 4 | N/A | 2 |
KsqlDB | 5 | 100 GB | 2 | 5 | 100 GB | 2 |
建立叢集後,您仍可以根據業務需求在不同規格的基礎上調整叢集資源配置。
叢集組件資源分派規則
下表列出各組件的資源配置範圍。
您可以根據業務需求,在以下支援的資源區間內選擇合適的叢集規格配置。
產品組件 | 支援版本 | 副本數量 | 單節點群組件CU數 | 單節點Disk(進步式100 GB) |
Kafka Broker | 專業版/企業版 | 預設值:3 最小值:3 最大值:20 | 預設值:4 最小值:4 最大值:20 | 預設值:800 GB 範圍:800 GB - 30000 GB |
ZooKeeper | 專業版/企業版 | 預設值:3 最小值:3 最大值:3 | 預設值:2 最小值:2 最大值:20 | 預設值:100 GB 範圍:100 GB - 30000 GB |
ControlCenter | 專業版/企業版 | 預設值:1 最小值:1 最大值:1 | 預設值:8 最小值:8 最大值:20 | 預設值:300 GB 範圍:300 GB - 30000 GB |
SchemaRegistry | 專業版/企業版 | 預設值:2 最小值:2 最大值:3 | 預設值:1 最小值:1 最大值:20 | 無儲存 |
Connect | 專業版/企業版(預設勾選,可取消不使用該組件功能) | 預設值:2 最小值:1 最大值:20 | 預設值:4 最小值:1 最大值:20 | 無儲存 |
KsqlDB | 專業版/企業版(預設勾選,可取消不使用該組件功能) | 預設值:2 最小值:1 最大值:20 | 預設值:5 最小值:5 最大值:20 | 預設值:100 GB 範圍:100 GB - 30000 GB |
KafkaRestProxy | 專業版/企業版(預設勾選,可取消不使用該組件功能) | 預設值:2 最小值:2 最大值:20 | 預設值:4 最小值:4 最大值:20 | 無儲存 |
相關文檔
Confluent提供了針對Kafka和Confluent Platform的資源評估工具,該工具適用於雲訊息佇列 Confluent 版,詳情請參見Sizing Calculator for Apache Kafka and Confluent Platform。