AWS MSK入門指南:全面入門指南

許多公司選擇轉向 AWS MSK,以避免管理 Apache Kafka 集群所帶來的運營困擾。

在本教程中,我們將探索 AWS MSK 的功能、優勢和最佳實踐。我們還將介紹設置 AWS MSK 的基本步驟,並比較它與其他流行服務如 Kinesis 和 Confluent 的差異。

什麼是 AWS MSK?

首先,讓我們了解 Apache Kafka 及其在數據流媒體中的實用性。

Apache Kafka 是一個開源的分佈式流媒體平台,處理實時數據流並能構建事件驅動的應用程序。它能夠在數據發生時即時攝取和處理流媒體數據。

根據 Kafka 的網站,超過 80% 的《財富》100 強公司信任並使用 Kafka。

最重要的是,Kafka 是可擴展且非常快速的。這意味著它可以處理比只能容納在一台機器上的數據量要多得多,並且具有極低的延遲。

如果您想學習如何為數據流式處理創建、管理和疑難排解 Kafka,請考慮參加 Kafka 入門 課程。

什麼時候是使用 Apache Kafka 的最佳時機?

  1. 當您需要實時處理大量數據,例如處理物聯網設備數據流時。
  2. 當您需要即時數據處理和分析,例如實時用戶活動追踪或詐騙檢測系統。
  3. 在需要具有合規要求和法規的審計跟踪的事件溯源情況下。

然而,管理 Kafka 實例可能會帶來許多麻煩。這就是 AWS MSK 出現的原因。

作者提供的圖片

AWS MSK(Managed Streaming for Kafka)是一項完全托管的服務,處理 Kafka 集群的供應、配置、擴展和維護。您可以使用它來構建即時響應數據流的應用程式。

Kafka 經常作為更大數據處理設置的一部分使用,而 AWS MSK 使創建在不同系統之間移動數據的即時數據管道變得更加容易。

Amazon MSK 的運作方式。圖片來源:AWS

如果您是 AWS 新手,建議您參加我們的 AWS 入門課程 以熟悉基本概念。當您準備好後,可以繼續參加我們的 AWS 雲技術與服務 課程,以探索企業所依賴的完整服務套件。

AWS MSK 的特點

AWS MSK 的競爭優勢在於它是一項完全管理的服務。您無需擔心設置伺服器或處理更新。

然而,這不僅僅是這樣。AWS MSK 的這五個關鍵特性使其成為值得投資的選擇:

  1. MSK 具有高可用性,AWS 保證嚴格的服務水平協議(SLA)得以遵守。它能自動替換失效的組件,並且不會對您的應用造成停機。
  2. MSK 具有自動擴展存儲選項,因此會隨著您的需求自動擴展。您還可以根據需要快速調整存儲容量,增加或減少代理。
  3. 在安全方面,MSK 是一個全面的解決方案,提供靜態和傳輸加密。它還與 AWS IAM 集成,用於訪問控制。
  4. 如果您已經在使用 Kafka,您可以無需更改代碼即可遷移到 MSK,因為 MSK 支持所有常規 Kafka API 和工具。
  5. MSK 是一個具有成本效益的選項,無需僱用整個工程團隊來監控和管理集群。AWS 甚至宣稱它可能比自行管理的 Kafka 便宜高達 40%。

使用 AWS MSK 的好處

正如我們已經看到的,由於其可用性、可擴展性、安全性和易集成性,AWS MSK 提供了即時價值。這些核心優勢使其成為在雲端運行 Kafka 工作負載的首選。

AWS MSK 解決了每個數據流項目所面臨的四個關鍵挑戰:

  • MSK 是一個完全受管的服務,讓您專注於構建應用程序,而不是管理基礎設施。
  • MSK 具有高可用性和可靠性,這在當今變得日益重要,因為用戶期望全天候訪問服務和應用程序。
  • MSK 具有關鍵的全面安全功能。
  • MSK 具備本地 AWS 整合功能,使在 AWS 生態系統內建立完整的流式數據解決方案變得更加容易。

設置 AWS MSK

要開始使用 AWS MSK,首先要創建您的 AWS 帳戶。如果您是第一次使用 AWS,請通過我們全面的教程 了解如何設置和配置您的 AWS 帳戶

登錄 AWS 管理控制台並打開 MSK 控制台。點擊“創建集群”以開始設置過程。

開始使用 AWS MSK。圖片來源:AWS

選擇“快速創建”以使用默認設置,然後輸入描述性的集群名稱。

從那裡開始,您有許多額外的選項可供選擇,這些選項都取決於您對集群的需求。以下是選擇的快速概述:

  • 集群類型:“預配置”或“無伺服器”
  • Apache Kafka 版本
  • 代理類型:“標準”或“快遞”
  • 代理大小
  • EBS 儲存卷

AWS MSK 配置選項

集群始终在Amazon VPC内创建。您可以选择使用默认VPC或配置和指定自定义VPC。

现在,您只需要等待您的集群激活,这可能需要15到30分钟。您可以从集群摘要页面监视您的集群状态,在那里您将看到状态从“创建中”变为“活动中”。

使用AWS MSK摄取和处理数据

设置MSK集群后,您需要创建客户端机器来跨一个或多个主题生成和消费数据。由于Apache Kafka与许多数据生产者(如网站、物联网设备、Amazon EC2实例等)集成得非常好,MSK也分享了这一优势。

Apache Kafka 將 數據組織在稱為主題的結構中。每個主題由單個或多個分區組成。分區 是 Apache Kafka 中的並行度。數據通過數據分區在代理之間分配。

處理 Apache Kafka 集群時需要了解的關鍵術語:

  • 主題 是 Kafka 中組織數據的基本方式。
  • 生產者 是將數據發佈到主題的應用程序——它們生成並寫入數據到 Kafka。它們在特定的主題和分區上寫入數據。
  • 消費者是從主題中讀取和處理數據的應用程序。它們從所訂閱的主題中提取數據。

在使用 AWS MSK 構建事件驅動架構時,您需要配置幾個層,其中 MSK 是主要的數據攝取組件。以下是可能需要的層的概述:

  1. 數據攝取設置
  2. 處理層
  3. 存儲層
  4. 分析層

使用Amazon MSK和Amazon EventBridge实现事件驱动架构的示例。图片来源:AWS

如果您有兴趣在数据流水线工作流中利用Python,请查看我们的Python中AWS Boto简介课程。

AWS MSK使用的最佳实践

AWS MSK相对简单,可以立即设置并开始使用。然而,一些基本的最佳实践将提高您的集群性能,并在日后节省时间。

合理设置您的集群

您需要选择每个经纪人的正确分区数以及每个集群的正确经纪人数。

有多種因素可以影響您在這裡的決策;然而,AWS 提供了一些方便的 建議和資源 來指導您完成這個過程。

此外,AWS 提供了一個易於使用的 大小和定價電子表格 來幫助您估算集群的合適大小以及使用 AWS MSK 與類似的自我管理 EC2 Kafka 集群的相關成本。

建立高可用性集群

AWS 建議您設置集群以實現高可用性。這在執行更新(例如更新 Apache Kafka 版本)或 AWS 替換代理時尤其重要。

為了確保您的集群具有高可用性,您必須做三件事:

  1. 在三个可用区(也称为三AZ集群)建立您的集群。
  2. 将复制因子设置为3或更高。
  3. 将最小的同步副本数量设置为RF-1。

在AWS的一个很棒的地方是,他们对多AZ部署承诺严格的SLA;否则,您将获得您的积分返还

监控磁盘和CPU使用情况

通过AWS CloudWatch监控的两个关键指标是磁盘和CPU使用情况。这样做不仅可以确保系统顺利运行,还有助于降低成本。

管理磁盤使用和相關存儲成本的最佳方法是設置一個 CloudWatch 警報,當磁盤使用量超過某個值(例如 85%)時會通知您,並調整保留策略。為日誌中的消息設置保留時間可以幫助自動釋放磁盤空間。

此外,為了維持集群的性能並避免瓶頸,AWS 建議您保持經紀人的總 CPU 使用量在 60% 以下。您可以使用 AWS CloudWatch 來監控這一點,然後通過更新您的經紀人大小來採取糾正措施。

使用傳輸加密來保護您的數據

默認情況下,AWS 在您的 MSK 集群中的經紀人之間加密數據傳輸。如果您的系統出現高 CPU 使用率或延遲,則可以禁用此功能。但強烈建議您始終保持傳輸加密功能開啟,如果這對您造成問題,請尋找其他改善性能的方法。

查看我們的 AWS 安全性和成本管理 課程,了解更多關於如何保護和優化您的 AWS 雲環境以及管理 AWS 成本和資源的資訊。

比較 AWS MSK 與其他流媒體工具

在決定哪種工具最適合一個項目時,我們通常需要評估幾個選項。以下是AWS MSK最常見的替代方案以及它們的比較。

AWS MSK vs Apache Kafka on EC2

在MSK和在EC2上使用Apache Kafka這兩個選項之間的主要權衡是便利性和控制:MSK讓您需要管理的東西較少但靈活性較低,而EC2讓您擁有完全控制權但需要更多工作。

AWS MSK處理所有複雜的運營任務,具有自動配置和配置功能。這樣做的好處是沒有前期基礎設施成本。同時與其他AWS服務無縫集成,並具有強大的安全功能。

在EC2上使用Kafka則需要更多手動設置和配置,您還需要自行處理所有維護和更新。這提供了更大的靈活性,但可能伴隨著更多的複雜性和運營成本,可能需要更高技能的團隊。

AWS MSK vs. Kinesis

使用Kinesis可獲得簡單性和深度的AWS集成,使用MSK可獲得Kafka相容性或更多對串流設置的控制。

Kinesis是完全無伺服器架構,使用shard進行數據串流。AWS為您管理一切。但是,需要注意數據保存限制。對於簡單的數據串流需求,Kinesis是一個很好的解決方案。

AWS MSK依賴於Kafka的主題和分區模型,根據您的存儲量,幾乎具有無限的數據保留。這是一個更靈活和可定制的解決方案,如果需要,您可以遷移離開AWS。

如果您對 Kinesis 不熟悉,我們有一門課程可以引導您使用 AWS Kinesis 和 Lambda 處理串流數據

AWS MSK 與 Confluent

如果您需要全面的功能和支援,選擇 Confluent;如果您在 AWS 上有大量投資且擁有 Kafka 專業知識,則選擇 MSK。

Confluent 擁有豐富的功能集和眾多內建連接器。整體來說,它是一個較昂貴的選擇,但提供有限功能的免費方案。Confluent 非常適合峰值工作負載,並且擁有更簡單的部署過程。

相比之下,AWS 更加精簡,專注於核心 Kafka 功能。要獲得更廣泛的功能集,AWS MSK 必須與其他 AWS 服務集成。幸運的是,這種集成是無縫的。AWS MSK 的基本成本較低,對於穩定的工作負載來說是一個不錯的選擇。

以下表格提供了 AWS MSK 及其替代方案的比較:

功能

AWS MSK

Apache Kafka on EC2

Kinesis

Confluent

部署

完全托管

在 EC2 上自行管理

完全托管

完全托管或自行管理

易於使用

易於設置和管理

需要手動設置和擴展

簡單設置;AWS原生

用戶友好的UI和高級工具

可擴展性

自動調整與手動調整

手動調整

無縫調整

具彈性的自動調整

延遲

低延遲

低延遲

小負載的低延遲

與 MSK 相當

協議支援

Kafka API 相容

Kafka API 相容

專有的 Kinesis 協議

Kafka API 和其他協議

數據保留

可配置(最多7天默認)

可配置

可配置(最多365天)

高度可配置

監控和指標

與CloudWatch集成

需要自定義設置

與CloudWatch集成

高級監控工具

成本

按使用量付費

基於EC2實例價格

按使用量付費

訂閱制

安全性

內建AWS安全功能

必須手動配置安全性

與AWS IAM整合

全面的安全功能

使用案例適用性

最適合AWS生態系中的Kafka使用者

靈活但維護成本高

最適合AWS原生應用程式

進階的Kafka使用者和企業

結語

Apache Kafka 是在需要大规模、可靠的解决方案、不能容忍数据丢失,以及需要连接多个数据源或构建复杂数据流水线的情况下的首选。 AWS MSK 避免了设置和配置 Kafka 集群时的许多麻烦,使开发人员能够更多地专注于构建和改进应用程序,而不是基础设施。

获得 AWS 认证 是开始 AWS 职业的绝佳途径。您可以通过查看我们的 课程目录 并通过项目获得 实践经验 来建立您的 AWS 技能!

Source:
https://www.datacamp.com/tutorial/aws-msk