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 个可用区)。代理实例类型决定网络吞吐量和存储性能,kafka.m5.large 适合大多数工作负载。主题的分区数是吞吐量的关键参数,每个分区的写入上限约 1 MB/秒。分区数 = 目标吞吐量 / 单分区吞吐量。分区键的选择影响数据分布均匀性,避免热分区。副本因子建议设为 3 (跨 3 个可用区),min.insync.replicas 设为 2 确保写入持久性。

MSK Serverless 与 MSK Connect 降低运维负担

MSK Serverless 无需预置代理容量,按实际吞吐量和存储自动扩缩并计费。适合流量波动大或难以预估容量的工作负载。限制包括:单分区吞吐量上限 5 MB/秒、不支持自定义 Kafka 配置。MSK Connect 是托管的 Kafka Connect 运行环境,可部署社区或自定义连接器将数据从 Kafka 导入/导出到 S3、OpenSearch、DynamoDB 等。连接器的 Worker 自动扩缩,无需管理 Connect 集群。

与 Kinesis Data Streams 的选型标准

MSK 和 Kinesis Data Streams 都是流式数据平台,选型标准:已有 Kafka 生态 (应用、连接器、Schema Registry) 选 MSK;AWS 原生新建选 Kinesis。MSK 的优势是 Kafka 生态兼容性、更灵活的消费者组管理、更长的数据保留 (无限制 vs Kinesis 365 天)。Kinesis 的优势是与 Lambda/Firehose 的原生集成、按需自动扩缩 (无需管理分区)、更简单的运维。成本方面,低吞吐量时 Kinesis 更便宜 (按请求计费),高吞吐量时 MSK 更具性价比 (按代理实例计费)。

共有するXB!