許多公司選擇轉向 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 的最佳時機?
- 當您需要實時處理大量數據,例如處理物聯網設備數據流時。
- 當您需要即時數據處理和分析,例如實時用戶活動追踪或詐騙檢測系統。
- 在需要具有合規要求和法規的審計跟踪的事件溯源情況下。
然而,管理 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 的這五個關鍵特性使其成為值得投資的選擇:
- MSK 具有高可用性,AWS 保證嚴格的服務水平協議(SLA)得以遵守。它能自動替換失效的組件,並且不會對您的應用造成停機。
- MSK 具有自動擴展存儲選項,因此會隨著您的需求自動擴展。您還可以根據需要快速調整存儲容量,增加或減少代理。
- 在安全方面,MSK 是一個全面的解決方案,提供靜態和傳輸加密。它還與 AWS IAM 集成,用於訪問控制。
- 如果您已經在使用 Kafka,您可以無需更改代碼即可遷移到 MSK,因為 MSK 支持所有常規 Kafka API 和工具。
- 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 是主要的數據攝取組件。以下是可能需要的層的概述:
- 數據攝取設置
- 處理層
- 存儲層
- 分析層
使用Amazon MSK和Amazon EventBridge实现事件驱动架构的示例。图片来源:AWS
如果您有兴趣在数据流水线工作流中利用Python,请查看我们的Python中AWS Boto简介课程。
AWS MSK使用的最佳实践
AWS MSK相对简单,可以立即设置并开始使用。然而,一些基本的最佳实践将提高您的集群性能,并在日后节省时间。
合理设置您的集群
您需要选择每个经纪人的正确分区数以及每个集群的正确经纪人数。
有多種因素可以影響您在這裡的決策;然而,AWS 提供了一些方便的 建議和資源 來指導您完成這個過程。
此外,AWS 提供了一個易於使用的 大小和定價電子表格 來幫助您估算集群的合適大小以及使用 AWS MSK 與類似的自我管理 EC2 Kafka 集群的相關成本。
建立高可用性集群
AWS 建議您設置集群以實現高可用性。這在執行更新(例如更新 Apache Kafka 版本)或 AWS 替換代理時尤其重要。
為了確保您的集群具有高可用性,您必須做三件事:
- 在三个可用区(也称为三AZ集群)建立您的集群。
- 将复制因子设置为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 技能!