集群資源規(guī)格評(píng)估
對(duì)于云消息隊(duì)列 Confluent 版集群來說,影響資源使用的因素眾多,包括使用的業(yè)務(wù)場景、業(yè)務(wù)應(yīng)用程序性能等,本文結(jié)合一般場景給出云消息隊(duì)列 Confluent 版集群資源評(píng)估參考建議,幫助您在購買創(chuàng)建集群時(shí)評(píng)估集群規(guī)模。在集群創(chuàng)建完成后,您仍然可以根據(jù)實(shí)際的資源使用率進(jìn)行集群擴(kuò)容來變更集群的資源配置。
組成架構(gòu)
云消息隊(duì)列 Confluent 版是一個(gè)流數(shù)據(jù)平臺(tái),能夠組織管理來自不同數(shù)據(jù)源的數(shù)據(jù),是一個(gè)穩(wěn)定高效的系統(tǒng)。如下圖所示,它由六個(gè)組件構(gòu)成,分別為Kafka Broker、Rest Proxy、Connect、Zookeeper、ksqlDB、Control Center。
默認(rèn)情況下,云消息隊(duì)列 Confluent 版集群Kafka Broker、Rest Proxy、Connect、Zookeeper、ksqlDB、Control Center組件的副本數(shù)為3、2、2、3、2、1,您也可以根據(jù)實(shí)際的業(yè)務(wù)需求設(shè)置合適的副本數(shù)量。
集群資源評(píng)估
Kafka Broker資源評(píng)估
首先,需要評(píng)估您的業(yè)務(wù)需求,需求參數(shù)由下表列出。
需求參數(shù)
參數(shù)說明
扇出因子
寫入的數(shù)據(jù)會(huì)被consumer消費(fèi)多少次,其中不包含Broker內(nèi)部副本的復(fù)制流量。
數(shù)據(jù)峰值流入
業(yè)務(wù)數(shù)據(jù)的峰值流量,單位:MB/s。
數(shù)據(jù)平均流入
業(yè)務(wù)數(shù)據(jù)的平均流量,單位:MB/s。
數(shù)據(jù)保留時(shí)長
數(shù)據(jù)保留時(shí)長,默認(rèn)7天。
分區(qū)副本因子
分區(qū)副本因子,默認(rèn)為3,即每個(gè)分區(qū)具有3個(gè)副本。
估算Broker的節(jié)點(diǎn)數(shù):理想情況下,單個(gè)Kafka Broker最大能夠支持100 MB/s的流量;建議生產(chǎn)集群至少需要4個(gè)Broker節(jié)點(diǎn)數(shù),并保留50%的IO帶寬資源冗余。此外,從分區(qū)副本限制考慮,每個(gè)Broker不應(yīng)超過2000個(gè)分區(qū)副本;整個(gè)集群不應(yīng)超過200,000個(gè)分區(qū)副本。如果預(yù)估集群總分區(qū)副本數(shù)量會(huì)比較多,建議您從總分區(qū)數(shù)來評(píng)估所需Broker的節(jié)點(diǎn)數(shù)。
說明Broker節(jié)點(diǎn)數(shù) = Max(4,數(shù)據(jù)峰值流入 * (扇出因子 + 2 * 分區(qū)副本因子-1) * 2 / 400 MB/s)。
估算每個(gè)Broker的CU數(shù)量:由于所需CU數(shù)量與集群配置、客戶端配置及其使用方式、分區(qū)數(shù)量、集群規(guī)模、Consumer個(gè)數(shù)、Producer個(gè)數(shù)等都有關(guān)系,難以估算。建議您創(chuàng)建生產(chǎn)集群時(shí),每個(gè)Broker使用8 CU以上每Broker的配置,開發(fā)測(cè)試集群使用4 CU每Broker的配置。同時(shí),建議您每4 CU的Broker上不應(yīng)超過100個(gè)leader副本或300個(gè)分區(qū)副本(包含leader副本)。
估算每個(gè)Broker的磁盤大小:每個(gè)Broker的磁盤大小 = Max(1TB,數(shù)據(jù)平均流入 * 數(shù)據(jù)保留時(shí)長 * 分區(qū)副本因子 / Broker節(jié)點(diǎn)數(shù))。
Connect資源評(píng)估
節(jié)點(diǎn)數(shù)評(píng)估:建議選擇2個(gè)節(jié)點(diǎn)以上以保證Connect為高可用的。
CU評(píng)估:建議選擇每個(gè)節(jié)點(diǎn)8 CU以上。
Schema Resgitry資源評(píng)估
Schema Resgitry生產(chǎn)環(huán)境建議配置2個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)2 CU。
Control Center資源評(píng)估
Control Center生產(chǎn)環(huán)境建議配置1個(gè)節(jié)點(diǎn),計(jì)算資源為4 CU以上,數(shù)據(jù)存儲(chǔ)300 GB以上。
ksqlDB資源評(píng)估
節(jié)點(diǎn)數(shù)評(píng)估:建議選擇2個(gè)節(jié)點(diǎn)以上以保證REST Proxy為高可用的。
CU評(píng)估:建議選擇每個(gè)節(jié)點(diǎn)4 CU以上。
存儲(chǔ)評(píng)估:ksqlDB的存儲(chǔ)大小依賴于聚合語句以及并發(fā)查詢的數(shù)量,默認(rèn)選擇100 GB。
REST Proxy資源評(píng)估
節(jié)點(diǎn)數(shù)評(píng)估:建議選擇2個(gè)節(jié)點(diǎn)以上以保證REST Proxy為高可用的。
CU評(píng)估:如果您需要通過REST Proxy進(jìn)行消息的持續(xù)生產(chǎn)和消費(fèi),您需要選擇每個(gè)節(jié)點(diǎn)8 CU以上;否則,您可以選擇每個(gè)節(jié)點(diǎn)4 CU。
集群資源性能對(duì)比
下表展示了不同CU個(gè)數(shù)下,集群的總吞吐量變化,以及單個(gè)Producer時(shí)延變化。您可以根據(jù)業(yè)務(wù)的數(shù)據(jù)流量以及時(shí)延要求,選擇合適的集群CU個(gè)數(shù)。
以下測(cè)試結(jié)論在4 Broker規(guī)格集群、單Topic、300 Partion、60 Producer、單條消息大小1 KB的測(cè)試條件下獲得,實(shí)際業(yè)務(wù)場景與測(cè)試環(huán)境可能存在一定的性能差異。
集群規(guī)格 | 不限流條件下, 集群總吞吐量 | 不限流條件下, Producer平均吞吐量 | 不限流條件下, 平均時(shí)延 | 時(shí)延小于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 |
默認(rèn)情況下,云消息隊(duì)列 Confluent 版集群為4 Broker規(guī)格,具備400 MB/s吞吐量的集群性能。如果您希望增加集群的吞吐量性能,可以對(duì)集群進(jìn)行水平擴(kuò)容。每新增加一個(gè)Broker,集群吞吐量性能增加100 MB/s。
建議您在水平增加Broker時(shí),為每個(gè)Broker配置8 CU及以上的計(jì)算資源,從而保證CU數(shù)不會(huì)成為影響集群吞吐量性能的瓶頸因素。
下表列出了不同Broker個(gè)數(shù)下,對(duì)應(yīng)的集群吞吐量性能、消息處理能力,以及能夠支持的Partion數(shù)量。
集群規(guī)格 | 集群吞吐量 | 每小時(shí)處理消息數(shù) | 保證每個(gè)Partion吞吐量1MB/s,能夠支持Partion數(shù) |
4 Broker | 400 MB/s | 14.7億條 | 400個(gè) |
8 Broker | 800 MB/s | 29.5億條 | 800個(gè) |
12 Broker | 1200 MB/s | 44.2億條 | 1200個(gè) |
16 Broker | 1600 MB/s | 59億條 | 1600個(gè) |
20 Broker | 2000 MB/s | 73.7億條 | 2000個(gè) |
通常場景下,Partion吞吐量建議值在1 MB/s ~ 5 MB/s;對(duì)于低延遲需求的場景,應(yīng)該限制每個(gè)Partion的吞吐量大小。當(dāng)Partion數(shù)達(dá)到一定數(shù)量時(shí),集群吞吐量會(huì)下降,時(shí)延增加。
集群規(guī)格選擇建議
以下給出典型場景下的集群規(guī)格建議,您也可以參考Confluent官網(wǎng)指導(dǎo)文檔。
使用場景 | 建議生產(chǎn)環(huán)境使用 | 建議測(cè)試環(huán)境使用 | ||||
集群規(guī)格 | 生產(chǎn)規(guī)格(400MB/s吞吐,不含復(fù)制流量) | 最小規(guī)格(300MB/s吞吐,不含復(fù)制流量) | ||||
配置指標(biāo) | CU | Disk | Nodes | CU | Disk | Nodes |
Kafka Brokers | 12 | 3 TB | 4 | 4 | 1 TB | 3 |
Zookeeper | 4 | 100 GB | 3 | 2 | 100 GB | 3 |
Kafka Connect | 12 | N/A | 2 | 4 | N/A | 2 |
Control Center | 12 | 300 GB | 1 | 4 | 250 GB | 1 |
Schema Registry | 2 | N/A | 2 | 2 | N/A | 2 |
REST Proxy | 16 | N/A | 2 | 4 | N/A | 2 |
KsqlDB | 4 | 100 GB | 2 | 4 | 100 GB | 2 |
創(chuàng)建集群后,您仍可以根據(jù)業(yè)務(wù)需求在不同規(guī)格的基礎(chǔ)上調(diào)整集群資源配置。
集群組件資源分配規(guī)則
下表列出各組件的資源配置范圍。
您可以根據(jù)業(yè)務(wù)需求,在以下支持的資源區(qū)間內(nèi)選擇合適的集群規(guī)格配置。
產(chǎn)品組件 | 支持版本 | 副本數(shù)量 | 單節(jié)點(diǎn)組件CU數(shù) | 單節(jié)點(diǎn)Disk(進(jìn)步式100 GB) |
Kafka Brokers | 專業(yè)版/企業(yè)版 | 默認(rèn)值:3 最小值:3 最大值:20 | 默認(rèn)值:4 最小值:4 最大值:20 | 默認(rèn)值:1000 GB 范圍:1000 GB - 30000 GB |
ZooKeeper | 專業(yè)版/企業(yè)版 | 默認(rèn)值:3 最小值:3 最大值:3 | 默認(rèn)值:2 最小值:2 最大值:20 | 默認(rèn)值:100 GB 范圍:100 GB - 30000 GB |
Control Center | 專業(yè)版/企業(yè)版 | 默認(rèn)值:1 最小值:1 最大值:20 | 默認(rèn)值:4 最小值:4 最大值:20 | 默認(rèn)值:300 GB 范圍:300 GB - 30000 GB |
Schema Register | 專業(yè)版/企業(yè)版 | 默認(rèn)值:2 最小值:2 最大值:3 | 默認(rèn)值:2 最小值:2 最大值:20 | 無存儲(chǔ) |
Kafka Connect | 專業(yè)版/企業(yè)版(默認(rèn)勾選,可取消不使用該組件功能) | 默認(rèn)值:2 最小值:2 最大值:20 | 默認(rèn)值:8 最小值:4 最大值:20 | 無存儲(chǔ) |
KsqlDB | 專業(yè)版/企業(yè)版(默認(rèn)勾選,可取消不使用該組件功能) | 默認(rèn)值:2 最小值:2 最大值:20 | 默認(rèn)值:4 最小值:4 最大值:20 | 默認(rèn)值:100 GB 范圍:100 GB - 30000 GB |
Rest Proxy | 專業(yè)版/企業(yè)版(默認(rèn)勾選,可取消不使用該組件功能) | 默認(rèn)值:2 最小值:2 最大值:20 | 默認(rèn)值:8 最小值:4 最大值:20 | 無存儲(chǔ) |
相關(guān)文檔
Confluent提供了針對(duì)Kafka和Confluent Platform的資源評(píng)估工具,該工具適用于云消息隊(duì)列 Confluent 版,詳情請(qǐng)參見Sizing Calculator for Apache Kafka and Confluent Platform。