漿紗
Kafka 大小調整可以透過四種組態模式進行:簡單、粒度、反向和分割。
簡單的
簡單模式適合首次使用 Apache Kafka 的使用者或早期使用案例。對於此模式,您可以提供吞吐量 MBps、讀取扇出、保留和資源利用率百分比(預設值為 60%)等要求。您也可以進入環境,例如本機(裸機、VMware、Kubernetes 或 OpenStack)或雲端。根據這些信息,Kafka 叢集的大小提供了代理、zookeeper、Apache Kafka 連接工作器、模式註冊表、REST 代理、ksqlDB 和 Confluent 控制中心所需的伺服器數量。
對於分層存儲,請考慮使用粒度配置模式來確定 Kafka 叢集的大小。粒度模式適合經驗豐富的 Apache Kafka 使用者或定義明確的用例。本節介紹生產者、流處理器和消費者的大小。
生產者
若要描述 Apache Kafka 的生產者(例如本機用戶端、REST 代理程式或 Kafka 連接器),請提供以下資訊:
-
*姓名。 *火花。
-
*生產者類型。 *應用程式或服務、代理(REST、MQTT、其他)和現有資料庫(RDBMS、NOSQL、其他)。您也可以選擇“我不知道”。
-
*平均吞吐量。 *以每秒事件數計算(例如 1,000,000)。
-
*峰值吞吐量。 *以每秒事件數計算(例如 4,000,000)。
-
*平均訊息大小。 *以位元組為單位,未壓縮(最大 1MB;例如 1000)。
-
*訊息格式。 *選項包括 Avro、JSON、協議緩衝區、二進制、文字、“我不知道”和其他。
-
*複製因子。 *選項為 1、2、3(Confluent 建議)、4、5 或 6。
-
*保留時間。 *有一天(例如)。您希望將資料儲存在 Apache Kafka 中多久?輸入 -1 和任意單位可表示無限時間。計算器假設無限保留的保留時間為 10 年。
-
選取「啟用分層儲存以減少代理數量並允許無限儲存?」複選框。
-
啟用分層儲存後,保留欄位控制在代理本地儲存的熱資料集。檔案保留欄位控制資料在檔案物件儲存中的儲存時間。
-
*檔案存放保留。 *一年(例如)。您希望將資料保存在檔案儲存中多久?輸入 -1 和任意單位可獲得無限持續時間。計算器假設無限保留的保留時間為 10 年。
-
*增長乘數。 * 1(例如)。如果此參數的值是基於目前吞吐量,則將其設為 1。若要根據額外成長確定大小,請將此參數設定為成長乘數。
-
生產者實例的數量。 10(例如)。將運行多少個生產者實例?此輸入需要將 CPU 負載納入尺寸計算。空白值表示 CPU 負載未納入計算。
根據此範例輸入,尺寸對生產者有以下影響:
-
未壓縮位元組的平均吞吐量:1GBps。未壓縮位元組的峰值吞吐量:4GBps。壓縮位元組的平均吞吐量:400MBps。壓縮位元組的峰值吞吐量:1.6GBps。這是基於預設的 60% 壓縮率(您可以更改此值)。
-
所需的代理熱集儲存總量:31,104TB,包括複製和壓縮。所需的總代理外存檔儲存:378,432TB(壓縮)。使用"https://fusion.netapp.com"用於StorageGRID大小調整。
-
流處理器必須描述從 Apache Kafka 使用資料並返回 Apache Kafka 的應用程式或服務。大多數情況下,這些都是在 ksqlDB 或 Kafka Streams 中建構的。
-
*姓名。 *火花飄帶。
-
*處理時間。 *該處理器處理一條訊息需要多長時間?
-
1 毫秒(簡單、無狀態轉換)[範例],10 毫秒(有狀態的記憶體操作)。
-
100ms(有狀態網路或磁碟操作),1000ms(第三方 REST 呼叫)。
-
我已經對這個參數進行了基準測試,並且確切地知道需要多長時間。
-
-
*輸出保留。 * 1天(範例)。流處理器將其輸出傳回給 Apache Kafka。您希望這些輸出資料在 Apache Kafka 中儲存多久?輸入 -1 和任意單位可獲得無限持續時間。
-
選取核取方塊“啟用分層儲存以減少代理數量並允許無限儲存?”
-
*檔案存放保留。 * 1年(例如)。您希望將資料保存在檔案儲存中多久?輸入 -1 和任意單位可獲得無限持續時間。計算器假設無限保留的保留時間為 10 年。
-
*輸出直通百分比。 * 100(例如)。流處理器將其輸出傳回給 Apache Kafka。入站吞吐量的百分比將輸出回 Apache Kafka?例如,如果入站吞吐量為 20MBps,且該值為 10,則輸出吞吐量將為 2MBps。
-
這是從哪些應用程式讀取的?選擇“Spark”,這是基於生產者類型的大小調整中使用的名稱。根據上述輸入,您可以預期流處理器執行個體和主題分區估計的大小會產生以下影響:
-
此流處理器應用程式需要以下數量的實例。傳入的主題可能也需要這麼多的分區。聯絡 Confluent 確認此參數。
-
1,000 表示平均吞吐量,無成長乘數
-
峰值吞吐量為 4,000,無成長乘數
-
1,000 表示平均吞吐量,並帶有成長乘數
-
峰值吞吐量為 4,000,並帶有增長乘數
-
消費者
描述使用來自 Apache Kafka 的資料但不傳回 Apache Kafka 的應用程式或服務;例如,本機用戶端或 Kafka 連接器。
-
*姓名。 *激發消費者。
-
*處理時間。 *該消費者需要多長時間來處理一則訊息?
-
1ms(例如,像日誌記錄這樣的簡單且無狀態的任務)
-
10ms(快速寫入資料儲存)
-
100 毫秒(資料儲存寫入速度慢)
-
1000ms(第三方 REST 呼叫)
-
一些其他已知持續時間的基準測試過程。
-
-
*消費者類型。 *應用程式、代理程式或接收器至現有資料儲存(RDBMS、NoSQL 等)。
-
這是從哪些應用程式讀取的?將此參數與先前確定的生產者和流量大小連接起來。
根據上述輸入,您必須確定消費者實例的大小和主題分區估計。消費者應用程式需要以下數量的實例。
-
平均吞吐量為 2,000,無成長乘數
-
峰值吞吐量為 8,000,無成長乘數
-
平均吞吐量為 2,000,包括成長乘數
-
峰值吞吐量為 8,000,包括成長乘數
傳入的主題可能也需要這個數量的分區。聯絡 Confluent 進行確認。
除了對生產者、流處理器和消費者的要求之外,您還必須提供以下額外要求:
-
*重建時間。 *例如4小時。如果 Apache Kafka 代理主機發生故障,其資料遺失,並且需要配置新主機來取代故障主機,那麼這個新主機必須多快重建自身?如果值未知,請將此參數留空。
-
*資源利用率目標(百分比)。 *例如,60。您希望您的主機在平均吞吐量期間的使用率為何? Confluent 建議利用率為 60%,除非您使用 Confluent 自平衡集群,在這種情況下利用率可能會更高。
描述你的環境
-
*您的叢集將在什麼環境中運作? *亞馬遜網路服務、微軟 Azure、Google雲端平台、本地裸機、本地 VMware、本地 OpenStack 還是本地 Kubernates?
-
*主人詳細資料。 *核心數:例如48個,網卡類型(10GbE、40GbE、16GbE、1GbE或其他類型)。
-
*儲存磁碟區。 *主持人:12(例如)。每個主機支援多少個硬碟或 SSD? Confluent 建議每台主機配備 12 個硬碟。
-
*儲存容量/磁碟區(以 GB 為單位)。 * 1000(例如)。單一磁碟區可以儲存多少 GB 的儲存空間? Confluent 建議使用 1TB 磁碟。
-
儲存配置。儲存卷如何配置? Confluent 建議使用 RAID10 來充分利用 Confluent 的所有功能。也支援 JBOD、SAN、RAID 1、RAID 0、RAID 5 和其他類型。
-
*單卷吞吐量(MBps)。 * 125(例如)。單一儲存卷每秒的讀取或寫入速度是多少兆位元組? Confluent 建議使用標準硬碟,其吞吐量通常為 125MBps。
-
*記憶體容量(GB)。 * 64(例如)。
確定環境變數後,選擇“Size my Cluster”。根據上面指出的範例參數,我們確定了 Confluent Kafka 的以下大小:
-
*Apache Kafka。 *經紀人數量:22。您的叢集受儲存限制。考慮啟用分層儲存以減少主機數量並允許無限儲存。
-
Apache ZooKeeper。數量:5;Apache Kafka Connect Workers:數量:2;Schema Registry:數量:2;REST Proxy:數量:2;ksqlDB:數量:2;Confluent Control Center:數量:1。
對於平台團隊,請使用反向模式,無需考慮用例。使用分區模式來計算單一主題需要多少個分區。看 https://eventsizer.io根據反向和分割模式進行大小調整。