使用 Amazon MSK 构建 Apache Kafka 流处理基础设施 - 集群设计与运维

设计 Apache Kafka 托管集群,介绍与 MSK Serverless 的使用场景区分及 MSK Connect 的数据集成模式。

MSK 的特点与 Kinesis 的使用场景区分

MSK 是 Apache Kafka 的托管服务,Broker 的配置、补丁更新和故障恢复由 AWS 管理。与 Kafka 协议完全兼容,现有的 Kafka 生产者、消费者、Kafka Streams 应用和 Connect 连接器可直接使用。与 Kinesis Data Streams 的区分在于:需要现有 Kafka 生态系统兼容性时选择 MSK,重视 AWS 原生集成时选择 Kinesis。

集群设计与 MSK Serverless

Provisioned 集群指定 Broker 实例类型 (如 kafka.m5.large)、Broker 数量和存储容量。生产环境推荐最少 3 个 Broker (每个可用区 1 台),设置复制因子 3、min.insync.replicas 2 确保数据持久性。MSK Serverless 是 2022 年 GA 的模式,无需集群管理,按分区和吞吐量自动扩展。适合流量波动大或希望避免容量规划的用例。

MSK Connect 的数据集成

MSK Connect 是以托管方式运行 Kafka Connect 连接器的服务。通过 S3 Sink Connector 将主题数据自动写出到 S3,可用 RedshiftAthena 分析。DynamoDB Sink Connector 实时更新表,Debezium Source Connector 将 RDS 表的变更以 CDC 方式流式传输到 Kafka 主题。

MSK 的费用

Provisioned 集群费用由 Broker 实例小时计费和存储构成。kafka.m5.large 每小时约 0.21 美元 (月约 151 美元),最小 3 Broker 配置月约 453 美元。存储每 GB 月费约 0.10 美元。MSK Serverless 按集群小时 (约 0.75 美元/小时) 和分区小时计费。低流量环境中 Serverless 更经济。

总结

MSK 是将 Kafka 运维管理委托给 AWS 同时保持 Kafka 生态系统兼容性的服务。MSK Serverless 完全免除集群管理,MSK Connect 以托管方式运行 Kafka Connect 连接器。Tiered Storage 将冷数据自动分层到 S3,降低 Broker 存储成本。