Amazon MSK
AWS 全托管提供 Apache Kafka 集群构建和运维的流式服务,可直接使用 Kafka 兼容 API
概述
Amazon MSK (Managed Streaming for Apache Kafka) 是一项在 AWS 上全托管运维 Apache Kafka 代理集群的流式服务。与 Kafka 开源 API 兼容,现有 Kafka 生产者/消费者应用可无代码变更迁移。MSK Serverless 模式无需管理集群容量,MSK Connect 提供托管的 Kafka Connect 连接器运行环境。
代理设计与分区策略要点
MSK 集群由多个代理节点构成,跨可用区部署 (推荐 3 个可用区)。代理实例类型影响吞吐量,最佳实践页面按实例大小列出每个代理建议的分区数。主题的分区数是吞吐量的关键参数。分区键的选择影响数据分布均匀性,避免热分区。Standard 代理的最佳实践页面建议使用 3 个可用区的集群、副本因子至少为 3、min.insync.replicas 不超过副本因子减 1;设为 2 时,三副本主题在一个副本离线时仍可用。AWS 在开发者指南中说明,预置集群有 Standard 和 Express 两种代理类型,MSK 支持以 KRaft 代替 ZooKeeper 管理元数据,基于 ZooKeeper 的 Kafka 3.9.x 集群有就地迁移到 KRaft 的步骤,超过支持结束日期的 Kafka 版本的集群会自动升级到推荐版本 (截至 2026 年 10 月)。
MSK Serverless 与 MSK Connect 降低运维负担
MSK Serverless 无需预置代理容量,会自动预置和扩缩容量。适合流量波动大或难以预估容量的工作负载。限制方面,单分区吞吐量等上限见配额页面,可设置的 Kafka 配置项也有限。MSK Connect 是托管的 Kafka Connect 运行环境,可部署社区或自定义连接器将数据从 Kafka 导入/导出到 S3、OpenSearch、DynamoDB 等。连接器的 Worker 自动扩缩,无需管理 Connect 集群。
与 Kinesis Data Streams 的选型标准
MSK 和 Kinesis Data Streams 都是流式数据平台。已有 Kafka 生态 (应用、连接器、Schema Registry) 时,开发者指南说明在 MSK 上无需更改应用代码。保留期方面,Kinesis Data Streams 的上限为 365 天,开发者指南说明 MSK 的保留期在存储范围内设置,使用分层存储时存储可近乎无限扩展 (截至 2026 年 10 月)。Lambda 支持将 Kinesis 和 MSK 作为事件源,无服务器形态在 Kinesis 的按需模式和 MSK Serverless 两侧都有。两者的计费方式不同,详见各自的定价页面。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。