本文說明如何預估 Managed Service for Apache Kafka 叢集所需的運算資源,以及如何調整現有叢集的大小。
建立 Managed Service for Apache Kafka 叢集時,請選擇叢集大小的下列參數:
vCPUs:叢集中的 vCPU 數量。vCPU 數量下限為 3。
記憶體:每個 vCPU 的記憶體容量。每個 vCPU 必須佈建 1 GiB 至 8 GiB 的記憶體。
叢集建立後,您就能更新這些值。
選擇初始叢集大小
如要選擇初始叢集大小,請先根據特定工作負載估算下列值。
- 寫入輸送量:生產端傳送資料至叢集的總速率,以 MBps 為單位。
- 讀取輸送量:消費者從叢集讀取資料的總速率,以 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
代理程式
建立叢集時,系統會在三個區域的每個區域中,佈建至少一個代理程式。代理程式會盡可能平均分配到各個區域,且所有代理程式的 vCPU 數量相同。經紀人數可透過下列公式計算:
number of brokers = max(3, ceiling(vCPUs / 15))
舉例來說,如果叢集有 75 個 vCPU,一開始會有 5 個代理程式。
如果變更 vCPU 數量,系統會將 vCPU 分配給現有代理程式,每個代理程式最多可分配 15 個 vCPU。如果叢集大小超過每個代理程式 15 個 vCPU,系統會佈建新的代理程式。佈建新的代理程式後,可以縮減至 1 個 vCPU,但無法刪除。
更新叢集大小
建立 Managed Service for Apache Kafka 叢集後,您可以調整 vCPU 數量和記憶體,以滿足需求。更新現有叢集時,請遵守下列規則:
叢集的整體 vCPU 與記憶體比例必須介於 1:1 和 1:8 之間。
如果縮減規模,每個現有代理程式必須至少有 1 個 vCPU 和 1 GiB 的記憶體。經紀人數絕不會減少。
如果擴充規模後新增了代理程式,與更新前相比,每個代理程式的平均 vCPU 和記憶體用量不得減少超過 10%。
舉例來說,如果您嘗試將叢集從 45 個 vCPU (3 個代理程式) 擴充至 48 個 vCPU (4 個代理程式),作業就會失敗。這是因為每個代理程式的平均 vCPU 數量從 15 個減少至 12 個,減少幅度為 20%,超過 10% 的限制。
如果需要減少超過 10% 的 CPU 數量,建議分階段減少。每次更新後,請監控資源用量,並視需要重新平衡分割區。
不過,如果您確信更新後,經紀人會有足夠的容量,可以停用這項檢查。如要停用檢查,請在 gcloud managed-kafka clusters update 指令中將 allow_broker_downscale_on_cluster_upscale 標記設為 true。這個標記表示您接受潛在的效能風險。
如要更新叢集,請參閱「更新 Managed Service for Apache Kafka 叢集」。
更新作業範例
以下範例的叢集一開始有 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 叢集
- 監控 Managed Service for Apache Kafka 叢集
- 更新 Managed Service for Apache Kafka 叢集