Managed Service for Apache Kafka 總覽

Managed Service for Apache Kafka 是一項 Google Cloud 服務,可協助您執行安全且可擴充的開放原始碼 Apache Kafka 叢集。本頁面將概要說明這項服務為您自動化及簡化的作業。如要進一步瞭解 Apache Kafka,請參閱 Apache Kafka 網站

輕鬆調整大小及擴充

如要調整 Managed Service for Apache Kafka 叢集的大小或規模,您只需要設定叢集的 vCPU 總數和 RAM 大小。經紀人管理 (包括儲存空間) 完全自動化。為滿足用戶端需求,您可以監控 vCPU 和其他資源使用率,並視需要調高或調低。

設定 vCPU 數量和 RAM 大小時,服務會自動調整代理程式大小並佈建資源。如果增加叢集大小需要新的代理程式,服務可以自動重新平衡代理程式間的分區。

佈建代理程式

設定叢集的 vCPU 和 RAM 大小時,服務會佈建新的代理程式,並擴充現有代理程式。在一般叢集設定中,vCPU 和 RAM 總大小會平均分配給所有代理程式。也就是說,每個代理程式可使用部分 vCPU,但每個代理程式至少需要一個 vCPU。所有叢集會分布於三個可用區。也就是說,每個叢集至少需要 3 個 vCPU 和 3 GiB 的 RAM。

增加叢集大小時,代理程式會垂直擴充,每個代理程式最多可達 15 個 vCPU。達到這個上限後,服務會建立新的代理程式。縮減叢集大小時,現有代理程式會縮減為單一虛擬 CPU,但不會遭到刪除。

最大中介服務大小隨時可能變更。 我們選擇這個上限,是為了維持代理程式總處理量與 vCPU 數量的線性比例。

縮放演算法

代理程式數量取決於叢集的 vCPU 或記憶體總容量。縮放比例為每 15 個 vCPU 或 120 gibibyte (GiB) 的資源對應 1 個代理程式,以產生較多代理程式的比例為準。vCPU 與記憶體比率 (vCPU:GiB) 必須介於 1:1 和 1:8 之間。代理程式會平均分配到 3 個可用區,最多只會差一個。

舉例來說,如果您設定的叢集有 70 個 vCPU 和 130 GiB RAM,且複製因數為 3,則經由下列計算,即可判斷代理程式數量:

  • 計算考量 vCPU 後所需的代理程式數量:ceiling(70 vCPUs / 15 vCPUs) = 5 個代理程式

  • 計算記憶體所需的代理程式數量:ceiling(130 GiB / 120 GiB) = 2 個代理程式

在這個情境中,叢集有 5 個代理程式,因為代理程式數量取決於 vCPU 數量。其中 2 個可用區各分配到 2 個代理程式,最後一個可用區則分配到 1 個代理程式。

管理儲存空間

系統會自動管理儲存空間。在大多數情況下,您有責任為個別主題設定保留時間,以控管費用或符合資料保留政策。您不必佈建及管理永久磁碟。

這項服務採用分層儲存空間 (KIP-405)。分層儲存空間結合了附加至代理程式的預先佈建永久磁碟磁碟區,以及近乎無限的物件儲存空間。

為平衡效能、可用性和費用,這項服務會為每個 vCPU 分配至少 100 GiB 的 SSD 永久磁碟。系統會針對每個 vCPU 收取 100 GiB 的費用,但每個代理程式的實際磁碟大小可能超過這個值。即使叢集縮減,每個代理程式的磁碟大小也不會減少。

每個分區領導者都會將訊息緩衝處理到這些永久磁碟上的區隔檔案中。區段捲動後,會移至由區域 Cloud Storage 支援的永久物件儲存空間。這些區隔檔案的大小是由 log.roll.mslog.segment.bytes 設定決定。

雖然這些詳細資料有助於瞭解情況,但儲存空間是由服務管理。 具體設定 (例如每個 vCPU 的永久磁碟容量) 是可能會變更的實作細節。您無法直接存取用於永久儲存空間的 Cloud Storage bucket。

重新平衡

如要讓新佈建的代理程式有助於維持效能,必須將現有代理程式的部分流量移至這些新機器。為簡化這項作業,您可以開啟自動重新平衡功能。

啟用自動重新平衡功能後,當佈建新的代理程式時,服務會自動重新平衡現有代理程式的分區。分層儲存空間模型會驗證相對較少的資料必須複製到新的代理程式,進而加快重新平衡的速度。

重新平衡演算法是以分割區數量為依據。且不會考量每個分區實際提供的流量。

彈性網路

這項服務可讓您從任何虛擬私有雲安全地存取叢集。包括從多個虛擬私有雲、專案和地區存取。

如要設定叢集的網路,請提供可存取叢集的子網路集。這項服務會為各子網路中的啟動伺服器和代理程式提供私人 IP 位址。此外,這項服務也會為每個 IP 位址設定私人 Cloud DNS 和網址。啟動伺服器有負載平衡器,因此每個叢集都有一個啟動網址。所有 VPC 的網址都相同,因此用戶端設定在各個環境中都能保持一致。

這項彈性功能是透過 Private Service Connect (PSC) 達成。叢集分配到的每個 IP 位址都需要 PSC 端點。系統會自動佈建端點。

保護叢集

這項服務提供下列叢集安全防護功能:驗證、授權、加密、修補程式和資源隔離。此外,系統也會禁止未經驗證和未加密的連線與儲存空間。

驗證

這項服務支援兩種驗證方法:簡單驗證和安全層 (SASL) 以及相互傳輸層安全標準 (mTLS)。2025 年 6 月 24 日後建立的叢集可使用 mTLS 驗證。所有連線至代管叢集的連線,都會使用 SASL 或透過 mTLS 的用戶端憑證,以 IAM 身分主體進行驗證。使用 SASL 時,系統支援將人員、服務和聯合帳戶做為主體。

這項服務不支援其他通訊協定,包括 SASL/GSSAPI、SASL/SCRAM-SHA-256 和 SASL/SCRAM-SHA-512。這項服務也不允許未經驗證的連線。

授權

這項服務採用分層授權方法。IAM 可控管叢集管理動作,例如建立、更新及刪除資源。經過驗證的主體授權取決於所用的方法:

  • SASL:使用 IAM 的主體會透過Google Cloud IAM 角色繫結或叢集上的 Kafka ACL 獲得授權。詳情請參閱「設定 SASL 驗證」。

  • mTLS:透過 mTLS 驗證的主體會透過 Kafka ACL 授權。詳情請參閱「設定 mTLS 驗證」。

您可以使用 Google Cloud 工具或第三方 Kafka 工具管理 Kafka ACL。 如要進一步瞭解如何設定 IAM 和 Kafka ACL,請參閱「使用 IAM 和 Kafka ACL 控管存取權」。

加密

必須加密。與叢集的所有連線都必須使用 TLS。代理程式提供的 TLS 憑證是由公開憑證授權單位簽署。儲存的資料一律會加密。選擇使用 Google 代管或客戶自行管理的加密金鑰 (CMEK) 加密靜態資料。

修補

服務團隊會追蹤在開放原始碼中發現的安全漏洞。這項服務發現安全漏洞時,會自動修補叢集。

資源隔離

這項服務的另一項安全功能是資源隔離。受管理服務會在租戶專案中部署叢集,這些叢集位於無法透過公開 IP 位址存取的私人虛擬私有雲。每個專案都有專屬的用戶端專案,以及專屬的服務代理程式帳戶。這有助於限制授予服務的存取權範圍。

結構定義儲存庫

為簡化生產端與取用端之間的協調作業,Managed Service for Apache Kafka 包含結構定義儲存庫 API。服務提供的登錄檔會做為應用程式共用的結構定義存放區。

這項服務會實作 Confluent Schema Registry REST API,協助整合現有的 Kafka 應用程式。系統支援 Apache Avro 和通訊協定緩衝區 (Protobuf) 結構定義格式。不支援 JSON。

Managed Service for Apache Kafka 也提供管理 API 和工具組,可管理結構定義儲存庫和結構定義。這組工具包括Google Cloud 控制台、gcloud CLI 和用戶端程式庫。

如要進一步瞭解結構定義登錄,請參閱結構定義登錄總覽

透過 Kafka Connect 整合資料

Managed Service for Apache Kafka 可透過 Kafka Connect 簡化資料整合作業。Kafka Connect 提供多種內建連接器外掛程式,這些外掛程式會託管在 Connect 叢集中。這些連接器可用於遷移、備份、災難復原、高可用性和資料整合。您可以透過這些連接器,將 Managed Service for Apache Kafka 叢集連線至各種系統,包括其他 Kafka 部署作業和 BigQuery、Cloud Storage 和 Pub/Sub 等服務。 Google Cloud Kafka Connect 提供可擴充且可靠的資料整合功能,可降低作業管理負擔,並整合監控和記錄功能。

如要進一步瞭解 Kafka Connect,請參閱 Kafka Connect 總覽

高可用性叢集

這項服務的目標是為重要業務應用程式提供區域叢集。具體來說,這項服務可保護您免於個別可用區或代理程式發生故障。

為此,所有叢集都會在機架感知的三區域設定中佈建。預設主題設定至少需要三個副本。 機架感知功能可確保備用資源建立於不同可用區。預設的同步副本數量下限為兩個。這表示叢集可容許可用區或代理程式完全遺失。

如果代理程式因軟體、硬體或網路故障而無法運作,系統會自動替換。服務偵測到代理程式故障時,會自動重新啟動代理程式,必要時還會在其他機器上重新啟動。代理程式可用後,Apache Kafka 會將代理程式整合至叢集。如果可用區完全故障,可能就無法建立新的代理程式。 不過,只要其他兩個可用區仍可使用,叢集就會繼續運作。

除了上述特定功能,我們還會透過不斷擴充的內部工具和程序,主動維護服務、Apache Kafka 程式碼和更新的健康狀態。系統會在多個層級維護資料和中繼資料備份,因此服務可以從許多人為錯誤和軟體故障中復原。

這項服務無法防範區域或雙區域故障。如果應用程式需要這種程度的保護,建議您執行兩個獨立的區域叢集。您可以使用 Kafka Connect 的 MirrorMaker 2.0 等工具,在兩個叢集之間同步處理資料。

適合您管理風格的工具

這項服務旨在提供全套工具,協助您管理叢集及排解問題。包括管理、監控和記錄工具。

Managed Service for Apache Kafka 會以 Google Cloud API 的形式公開。也就是說,您可以使用 REST 和 gRPC API 管理叢集和叢集資源。這些 API 提供多個用戶端和介面,包括

  • 如果您偏好基礎架構即程式碼方法,可以使用 Terraform 供應商。
  • Google Cloud 控制台中的使用者介面,可在瀏覽器中進行互動式工作。
  • gcloud CLI 可在殼層中進行互動式作業。
  • 提供 Java、Python、Go 和其他語言的用戶端程式庫,方便您進行自訂開發和編寫指令碼。

這項服務會將指標匯出至 Cloud Monitoring,方便您監控及排解問題。部分指標可在服務使用者介面中查看。 如要進行互動式作業、設定快訊及匯出至其他系統,請使用 Cloud Monitoring 的完整指標集。

這項服務也會將代理程式記錄檔匯出至 Cloud Logging。這些記錄可供搜尋,並用於建立記錄指標和快訊。

升級與修補程式

Managed Service for Apache Kafka 叢集會在 Apache Kafka 3.7.1 版上執行。 這項服務會自動修補重大安全漏洞。

基礎架構 (包括作業系統和協調層) 會持續自動更新。代理程式會透過滾動式重新啟動更新,叢集不會停機。

這項服務不會自動將代理程式上執行的 Apache Kafka 程式碼升級至新的次要版本。

費用透明

Managed Service for Apache Kafka 的定價模式與您在 Compute Engine 上自行執行 Apache Kafka 時的費用類似。您需要支付佈建的資源 (vCPU、RAM 和本機儲存空間) 和耗用的資源 (永久儲存空間和資料移轉) 費用。與自行設定類似系統相比,使用 Managed Service for Apache Kafka 時,持續性儲存空間和 vCPU 的費用較高。相較之下,Managed Service for Apache Kafka 和自行管理的 Kafka 在資料移轉和本機儲存空間的價格方面,兩者差異不大。如要進一步瞭解定價,請參閱「Managed Service for Apache Kafka 定價」。

由於我們執行 Apache Kafka,因此相容

最後,Managed Service for Apache Kafka 執行的開放原始碼軟體與您環境中執行的軟體相同。您不必變更應用程式程式碼,即可將應用程式遷移至這項服務。

限制

Managed Service for Apache Kafka 有下列限制:

  • 每個叢集在三個可用區中都必須有相同的資源。不支援單一或雙區域 Managed Service for Apache Kafka 叢集。

  • 建立叢集時,您無法選擇區域。

  • 您無法設定叢集上的本機儲存空間容量。

  • Managed Service for Apache Kafka 會以 KRaft 模式執行。不支援 Zookeeper 模式。

  • 不支援指標的 JMX API。

  • 系統不支援使用 zstd 壓縮主題。compression.type 支援的值包括 lz4gzipsnappyuncompressed

  • 您隨時可以透過 read-only 更新模式變更代理程式設定,但這些變更只會在代理程式重新啟動時生效。重新啟動是 Google 維護和升級程序的一部分,會定期進行,但沒有固定時間表,也無法手動觸發。因此無法控制這些變更的生效時間。read-only 設定範例包括 auto.create.topics.enablebackground.threads。使用 cluster-wide 更新模式更新設定 (例如 message.max.bytes) 時,不需要重新啟動,更新會立即生效。

  • 部分代理程式設定參數由服務管理,無法更新。包括 broker.id 和儲存空間相關設定,例如 remote.log.storage.system.enable

後續步驟

Apache Kafka® 是 The Apache Software Foundation 或其關聯企業在美國與/或其他國家/地區的註冊商標。