本文說明如何預估 Managed Service for Apache Kafka 叢集所需的運算資源,以及如何調整現有叢集的大小。
建立 Managed Service for Apache Kafka 叢集時,請選擇叢集大小的下列參數:
vCPUs:叢集中的 vCPU 數量。vCPU 數量下限為 3。
記憶體:每個 vCPU 的記憶體容量。每個 vCPU 必須佈建 1 GiB 至 8 GiB 的記憶體。
叢集建立後,您就能更新這些值。
選擇初始叢集大小
如要選擇初始叢集大小,請先根據特定工作負載估算下列值。
- 寫入處理量:生產端傳送資料至叢集的總速率,以 MB/秒 為單位。
- 讀取輸送量:消費者從叢集讀取資料的總速率,以 MBps 為單位。
如要估算處理此輸送量所需的叢集大小,請執行下列步驟:
計算總寫入頻寬,包括複製。
Total write bandwidth = produce rate * replicas這個值包括從用戶端到領導者代理程式,以及從領導者到副本代理程式的頻寬。預設備用資源數量為 3。
計算讀取總頻寬,包括複製作業。
Total read bandwidth = consume rate + produce rate * ( replicas - 1)這個值包括用戶端讀取作業的頻寬 (耗用率),以及副本保持同步所需的頻寬。副本會從分割區領導者讀取資料,藉此進行同步處理。使用
(replicas - 1)字詞是因為分割區領導者不會從任何副本讀取資料。計算寫入等效資料速率。
一般來說,讀取頻寬的處理效率是寫入頻寬的 4 倍。為因應這項差異,請依下列方式計算「寫入等效」資料速率:
Write-equivalent rate = (total write bandwidth) + (total read bandwidth / 4)決定目標 vCPU 使用率。這個值代表平均 vCPU 使用率,以 vCPU 容量的百分比表示。實際用量可能會隨時間起伏。
- 建議您先將使用率目標設為 50%。
- 如果您知道預期流量模式,請將使用率目標設為平均寫入等效頻寬與必須容納的尖峰頻寬比率。
一般來說,提高使用率可縮減叢集規模,進而降低叢集成本,但如果流量超出預估值,風險也會隨之增加。過度使用 vCPU 可能會導致延遲時間變長和發生錯誤。
計算 vCPU 數量。
vCPU count = ceiling (write-equivalent rate / 20 MBps / utilization)單一可用區中單一 vCPU 的預估容量為 20 MBps。 因此,如果 vCPU 以 100% 的使用率執行,則需要
(write-equivalent rate / 20)個 vCPU。如要取得實際數字,請將該值除以目標使用率,然後無條件進位。此外,如果批次傳送的訊息小於 10 KB,每個 CPU 的總處理量會比這裡的基準低。在這種情況下,請考量處理量容量減少,或考慮傳送較大的批次。
估算所需記憶體。建議每個 vCPU 使用 4 GiB 的 RAM。
Memory = vCPU count * 4 GiB
請使用實際工作負載進行測試,以取得最準確的大小。監控叢集的資源用量,並視需要擴充。
計算範例
假設工作負載的寫入速率為 50 MBps,讀取速率為 100 MBps,且有 3 個副本,目標 vCPU 使用率為 50%。
Total write bandwidth = 50 MBps * 3 replicas = 150 MBpsTotal read traffic = 100 MBps + 50 MBps * (3 - 1) = 200 MBpsWrite-equivalent rate = 150 MBps + (200 MBps / 4) = 200 MBpsTarget utilization = 0.5Number of vCPUs = ceiling (200 MBps / 20 MBps / 0.5) = 20 vCPUsMemory = 20 vCPUs * 4 GiB = 80 GiB
分區副本限制
每個叢集和每個代理程式的資料分割副本數量都有上限,因此在調整叢集大小時,請務必將這點納入考量。
每個叢集最多可有 100,000 個分區副本。這是硬性限制,與叢集中的代理程式數量無關。如果工作負載需要超過 100,000 個分區副本,請考慮將工作負載分配到兩個以上的叢集。
每個代理程式的上限為 4,000 個分區副本。這並非硬性限制。如要處理超過這個數量的副本,請考慮擴大叢集規模,以佈建更多代理程式。如要瞭解服務如何判斷代理程式數量,請參閱「代理程式佈建」。
擁有足夠的代理程式來處理分區後,即可調整代理程式大小,以因應輸送量。
更新叢集大小
建立 Managed Service for Apache Kafka 叢集後,您可以視需求調整 vCPU 數量和記憶體。詳情請參閱「更新 Managed Service for Apache Kafka 叢集」。
更新現有叢集時,請遵守下列規則:
叢集的整體 vCPU 與記憶體比例必須介於 1:1 和 1:8 之間。
每個現有代理程式都必須至少有 1 個 vCPU 和 1 GiB 的記憶體。代理程式數量不會減少。
如果擴大,與更新前的平均值相比,每個代理程式的平均 vCPU 和記憶體不得減少超過 10%。舉例來說,如果您嘗試將叢集從 45 個 vCPU (3 個代理程式) 擴充至 48 個 vCPU (4 個代理程式),每個代理程式的平均 vCPU 數量會從 15 個減少至 12 個,減少幅度為 20%,超過 10% 的限制。
如果需要減少超過 10% 的 vCPU 數量,建議分階段減少。每次更新後,請監控資源用量,並視需要重新平衡分割區。
不過,如果您確信更新後代理程式仍有足夠容量,可以執行
gcloud managed-kafka clusters update指令並加上allow_broker_downscale_on_cluster_upscale=true標記,停用這項檢查。這個標記表示您接受潛在的效能風險。
更新作業範例
以下範例的叢集一開始有 75 個 vCPU、130 GiB RAM 和 5 個代理程式。
升級作業失敗的範例
將叢集擴充至 80 個 vCPU 和 140 GiB RAM。
服務會判斷是否需要新的代理程式。
- 向上取整 (80 個 vCPU / 15) = 6 個代理程式
叢集會從 5 個代理程式增加到 6 個,因此會觸發 10% 的安全檢查。
目前每位經紀人的平均值如下:
75 個 vCPU / 5 個代理程式 = 每個代理程式 15 個 vCPU
130 GiB / 5 個代理程式 = 每個代理程式 26 GiB
如果使用 6 位經紀人,新的平均值如下:
80 個 vCPU / 6 個代理程式 = 每個代理程式 13.33 個 vCPU,減少 11.1%
140 GiB / 6 個代理程式 = 每個代理程式 23.33 GiB,減少 10.2%
由於這些平均值超過 10%,因此作業會失敗。
成功升級作業的範例
將叢集擴充至 85 個 vCPU 和 150 GiB RAM。
服務會判斷是否需要新的代理程式。
- ceiling (85 個 vCPU / 15) = 6 個代理程式
叢集會從 5 個代理程式增加到 6 個,因此會觸發 10% 的安全檢查。
目前每位經紀人的平均值如下:
75 個 vCPU / 5 個代理程式 = 每個代理程式 15 個 vCPU
130 GiB / 5 個代理程式 = 每個代理程式 26 GiB
如果使用 6 位經紀人,新的平均值如下:
85 個 vCPU / 6 個代理程式 = 每個代理程式 14.17 個 vCPU,減少 5.5%
150 GiB / 6 個代理程式 = 每個代理程式 25 GiB,減少 3.8%
這項作業會成功,因為每個代理程式的平均 vCPU 和記憶體減少量在 10% 限制內。
估算所需的磁碟大小
根據預設,Managed Service for Apache Kafka 會為每個代理程式的每個 vCPU 分配 100 GiB。預設分配的本機儲存空間足以應付大多數工作負載,但您可以設定代理程式磁碟大小,以滿足特定需求。本節說明如何估算所需的磁碟容量。
代理程式收到訊息時,會將訊息寫入本機區段檔案。
當區隔檔案達到大小或時間上限時,系統會關閉 (或「捲動」) 檔案,並移至遠端儲存空間。片段檔案大小上限由 log.roll.bytes 設定指定,而存在時間上限則由 log.segment.ms 設定指定。
區隔檔案捲動時,代理程式會開啟新的區隔檔案。代理程式將捲動的區段複製到遠端儲存空間時,該區段仍會保留在本機儲存空間中。因此,每個分割區都需要足夠的空間來儲存捲動的區段檔案,以及在捲動的區段移至遠端儲存空間時,儲存新區段檔案的空間。
根據預設,區隔檔案的大小上限為 230 MiB。對於使用率中等的叢集,您可以假設每個分區需要 250 MiB,以便在移動捲動區段時提供額外的緩衝空間。根據這項假設,每個代理程式的最小磁碟大小為:
250 MiB * partition count * replication factor / broker count
不過,所需大小取決於多項因素,例如區隔檔案大小上限、叢集負載、新資料寫入速率,以及寫入長期儲存空間的延遲時間。
請務必在每個代理程式上保留一些未使用的磁碟容量。如果代理程式沒有磁碟容量,行為將無法預測,可能導致資料遺失和叢集不穩定。監控磁碟用量 (disk/used_bytes) 相對於可用磁碟總大小 (disk/limit)。如果磁碟用量超過可用磁碟總大小的 80%,請設定較大的磁碟大小。詳情請參閱「監控叢集容量」。
後續步驟
- 建立 Managed Service for Apache Kafka 叢集
- 監控 Managed Service for Apache Kafka 叢集
- 更新 Managed Service for Apache Kafka 叢集
- 設定代理程式磁碟大小