Amazon Managed Streaming for Apache Kafka 功能

為什麼選擇 Amazon MSK?

Amazon Managed Streaming for Apache Kafka (Amazon MSK) 提供全受管 Apache Kafka、Kafka Connect 和 Amazon MSK Replicator。Apache Kafka 是一種分散資料存放區,強化即時擷取與處理串流資料的能力。Amazon MSK 能夠佈建叢集基礎設施、設定 Apache Kafka 叢集、在伺服器出現故障時更換伺服器、協調伺服器修補程式和升級、建置叢集以實現高可用性、確保資料得到持久存放和保護、設定監控和警示以及執行擴展以支援負載變化。藉助 Amazon MSK,您可以花費更多時間開發和執行串流事件應用程式,而非管理 Apache Kafka 叢集。

道路鳥瞰圖

可擴展的整合

Amazon MSK 是整合骨幹網路,用於在資料擷取和處理服務以及微型服務應用程式架構中心的現代簡訊和事件驅動應用程式。可採用多種方式與其他系統整合,包括多種其他 AWS 服務,從而實現更簡單、更快速的應用程式開發。您可以帶入自己的連接器,並透過 Amazon MSK Connect 將其部署在全受管的基礎設施上。或者,您也可以從面向其他 AWS 服務的日益增長原生整合清單中進行選擇,例如 Amazon S3、Amazon Redshift、Amazon Managed Service for Apache Flink 和 AWS Lambda。Amazon MSK 還與 AWS Identity and Access Management (IAM)、AWS Certificate Manager (ACM) 和 AWS Key Management Service (AWS KMS) 整合,以提供安全、經過身分驗證和授權的用戶端資料存取。您還可以選擇透過 AWS Glue 結構描述登錄檔強制執行結構描述管控。

城市景觀

與 Apache Kafka 相容

Amazon MSK 即時支援 Apache Kafka 的所有功能,並會在 Apache Kafka 更新版本公開發佈後的幾週內提供支援。

Amazon MSK 保持與 Apache Kafka 開放原始碼用戶端通訊協定的完全相容性,因此為 Apache Kafka 打造的應用程式和工具可立即與 Amazon MSK 搭配使用,無需變更應用程式的程式碼。

僅需執行幾個步驟就可以升級佈建叢集上的 Apache Kafka 版本,讓您決定何時利用 Apache Kafka 新版本中的功能和錯誤修正。Amazon MSK 會自動將版本升級部署在執行中的叢集上,從而為您維持用戶端輸入/輸出可用性。

選擇自己的叢集類型

Amazon MSK Provisioned 為您的 Apache Kafka 叢集提供精細的控制權。您可以選擇自己的代理程式類型、預先佈建的伺服器執行個體,選取所需的儲存類型,然後選擇可選的 Apache Kafka 版本。您還可以選擇何時以及以何種程度擴展叢集以回應工作負載的變化。

Amazon MSK Serverless 全面管理您的 Apache Kafka 叢集,因此您無需估計工作負載所需的容量,也無需決定何時擴展容量以回應流量的變更。

不必管理伺服器

無論您選擇何種叢集類型,僅需在 AWS 管理主控台中執行幾個步驟,就可建立全受管的叢集,該叢集具有高可用性、安全性,並由自動維護叢集營運運作狀態的 Amazon MSK 進階監控和偵測系統支援。

Apache Kafka 使用 Apache Kafka Raft (KRaft) 或 Apache ZooKeeper 進行中繼資料管理。Amazon MSK 允許您在支援的 Apache Kafka 版本上以任何一種模式建立叢集。Amazon MSK 還可為您管理這些額外的中繼資料節點,而無需額外費用。

多種代理程式類型

快速代理程式是 MSK Provisioned 下提供的一種代理程式類型。藉助快速代理程式,Apache Kafka 的管理工作得到簡化,在大規模執行時更加經濟高效,恢復能力得以提升,並且具有與您預期相同的低延遲。快速代理程式包含幾乎無限和彈性的儲存容量且無需任何管理開銷,同時每個代理程式提供高達 3 倍以上的輸送量,並且擴展速度可加快高達 20 倍。在 Amazon Managed Streaming services for Apache Kafka (MSK) 中,相比於標準 Apache Kafka 代理程式,復原速度還可加快高達 90%。

MSK Provisioned 下的標準代理程式提供最大的靈活性來設定叢集效能。您可以從叢集上的各種組態中進行選擇以調整維度,包括可用性、耐久性、輸送量和延遲。在標準代理程式上,您還要控制叢集上的儲存組態,並且負責管理儲存佈建和使用率。

儲存選項

快速代理程式包含幾乎無限和彈性的儲存容量,無需調整其大小、佈建或持續進行容量管理。儲存容量會自動擴展以滿足資料保留需求,並且您僅需為使用的儲存付費。

藉助分層儲存,您可以在 Amazon MSK 中存放幾乎無限的資料,而無需佈建和管理儲存容量。執行幾個步驟即可為現有叢集啟用分層儲存,並且僅需依用量付費。您首先可以將資料存放在效能最佳化的主要儲存方案中,然後讓 Amazon MSK 自動將資料分層到低成本方案中,以延長保留時間。提供 Amazon MSK 的所有 AWS 區域皆支援該功能。若要了解如何開始使用分層儲存,請參閱 Amazon MSK 開發人員指南

高恢復能力

所有叢集均分佈在多個可用區域 (預設為三個) 中,而 Amazon MSK 提供跨這些可用區域複製資料,並且無需額外支付費用。您的叢集可用性也受到 Amazon MSK 服務層級協議的支援,該協議保證 99.9% 的可用性。

Amazon MSK 擁有自動化系統,可快速偵測並回應問題。如果元件失敗,Amazon MSK 會自動將其取代,而不會造成應用程式停機。我們還可自動依需要部署軟體修補程式,確保您有最新叢集,並能順利執行。

Amazon MSK Serverless 和 MSK Provisioned 中的快速代理程式會強制執行最佳實務組態,例如三向複寫,並且為後台操作 (例如複寫和復原) 預留頻寬,讓您更輕鬆地實現叢集資源的可預測可用性。

使用 Amazon MSK Replicator,您可以將連續資料複寫目的地設定為其他區域中的次要備份叢集,讓您建置高可用性和容錯的多區域應用程式以提高恢復能力。您還可以使用 MSK Replicator,在不同地理區域提供較低延遲的資料存取,或將資料分發給您的合作夥伴。

高度安全

您的 Apache Kafka 叢集在 Amazon MSK 所管理的 Amazon Virtual Private Cloud (Amazon VPC) 中執行。您自己 Amazon VPC 中的 Kafka 用戶端可以透過 Amazon MSK 在 VPC 中部署的跨帳戶彈性網路界面私有存取叢集。如果您的 Kafka 用戶端分散在一或多個 VPC 或 AWS 帳戶中,則仍然可以使用多 VPC 私有連線功能以私密方式連線至叢集。此功能消除了自我管理 AWS PrivateLink 解決方案的營運開銷,並隨著 Amazon MSK 叢集擴展而無縫擴展,讓您無需進行其他組態變更即可維護叢集的私有連線。多 VPC 私有連線功能也消除了管理非重疊 IP、與其他 VPC 連線解決方案相關聯的複雜對等互連和路由表的挑戰。 多 VPC 私有連線功能允許在連線的 VPC 間重疊 IP。

IAM 存取控制是一種免費的安全選項,可使用 IAM 角色或使用者政策控制存取,從而簡化叢集身分驗證和 Apache Kafka API 授權。透過使用 IAM 存取控制,您不再需要建置和執行暫時的存取管理系統來控制 Apache Kafka 的用戶端身分驗證和授權。您的叢集預設使用最低特權許可進行保護。針對佈建叢集,您還可以使用簡單身分驗證及安全性階層 (SASL)/Salted Challenge Response Authentication Mechanism (SCRAM) 或共同 Transport Layer Security (TLS) 驗證與 Apache Kafka 存取控制清單 (ACL) 來控制用戶端存取。

Amazon MSK 無需特殊組態或第三方工具,即可將您的靜態資料加密。針對佈建叢集,所有靜態資料都可使用預設之 AWS KMS 金鑰或您自己的金鑰進行加密。您還可以透過 TLS 對在您的叢集上的代理程式之間,以及用戶端和代理程式之間傳輸的資料進行加密。針對無伺服器叢集,所有靜態資料預設都會使用服務管理的金鑰進行加密,而傳輸中的資料則預設透過 TLS 進行加密。

Amazon MSK 提供了一個選項,可以透過網際網路安全地連接至執行 Apache Kafka 2.6.0 或更新版本的 Amazon MSK 叢集的代理程式。透過啟用公有存取權,私有 Amazon VPC 外部的授權用戶端可以將加密資料串流入和串流出特定的 Amazon MSK 叢集。

可擴展性

您可以在不產生停機的情況下於幾分鐘內新增更多代理程式或移至較大規模的代理程式執行個體,以此擴展 MSK Provisioned 叢集。同樣,您可以透過移除代理程式或移至較小規模的代理程式執行個體來縮減叢集容量。

Amazon MSK Serverless 叢集會根據應用程式的輸送量需求,自動調整工作負載可用的運算和儲存資源。

Amazon MSK 與 Cruise Control 整合,這是 Apache Kafka 的熱門開放原始碼工具,可自動代表您管理分割區指派。針對無伺服器叢集, Amazon MSK 會為您自動管理分割區指派。

您可以利用 AWS 管理主控台或 AWS Command Line Interface (AWS CLI) 無縫擴展每個代理程式佈建的儲存數量,以配合儲存需求的變動。您還可以建立自動擴展政策來自動擴展儲存,以滿足不斷增長的串流需求。

可設定

藉助 Amazon MSK,您可以選擇希望的叢集設定方式。快速代理程式已預先設定有 Amazon MSK 建議的最佳實務預設值。這可立即提供最佳的可用性、耐久性和輸送量效能。您可以自訂選取的組態,以滿足工作負載的特定需求。另一方面,標準代理程式可讓您靈活地修改 30 多種不同的叢集組態。這可讓您根據自己的確切要求量身打造可用性、價格效能和整體叢集行為。您還可以存取 Kafka 的全套動態和主題層級組態,協助您進一步完善體驗。如需詳細資訊,請參閱自訂 MSK 組態文件。

可觀測

您可以使用 CloudWatch 視覺化和監控關鍵的指標,以了解和維護串流應用程式效能。提供超過 50 個指標的預設集,無需額外支付費用。您也可以啟用更加增強的代理程式層級和主題層級監控以解決特定問題。增強的指標依標準 CloudWatch 費率計費。

Open Monitoring with Prometheus 讓您可以使用 DatadogLensesNew RelicSumo Logic 等解決方案,或 Prometheus 伺服器來監控 Amazon MSK,並將現有的監控儀表板輕鬆遷移至 Amazon MSK。如需詳細資訊,請參閱 Open monitoring with Prometheus 文件。

代理程式日誌可讓您排查 Apache Kafka 應用程式的問題,並分析其與 MSK 叢集的通訊。您可以將 Apache Kafka 代理程式日誌傳遞至下列一個或多個目的地類型:Amazon CloudWatch Logs、Amazon Simple Storage Service (Amazon S3) 和 Amazon Data Firehose。您也可以使用 AWS CloudTrail 記錄 Amazon MSK API 呼叫。

深度整合

我們在 Amazon MSK 中提供各種各樣的 AWS 整合。這些整合包括以下內容:

  •  AWS Identity and Access Management (IAM),用於 Apache Kafka 和服務層級的 API 存取控制
  • Amazon Managed Service for Apache Flinks,用於執行全受管 Apache Flink 應用程式,以在 Apache Kafka 內處理串流資料
  • Amazon Managed Service for Apache Flink Studio,用於使用 Apache Flink SQL 執行互動式串流 SQL 和長時間執行的 SQL 任務
  • AWS Glue Schema Registry,用於集中控制和改進結構描述
  • AWS IoT Core,用於 IoT 事件串流至 Amazon MSK
  • AWS Database Migration Service (AWS DMS),用於變更資料擷取和分析
  • Amazon VPC,用於私有用戶端連線和網路隔離
  • AWS KMS,用於靜態加密
  • AWS Certificate Manager Private Certificate Authority,用於共同 TLS 用戶端身分驗證
  • AWS Secrets Manager,用於安全儲存和管理 SASL/SCRAM 機密
  • AWS CloudFormation,用於以程式碼形式部署 Amazon MSK
  • Amazon CloudWatch,用於叢集、代理程式、主題、取用者和分割區層級的指標