使用 Amazon MSK Serverless 开始事件流处理 - 构建零运维的 Kafka 环境
介绍使用 IAM 认证构建无需集群管理的 Kafka 环境,并通过与 EventBridge Pipes 的集成简化事件流处理的方法。
MSK Serverless 的特点
MSK Serverless 是用户无需自行进行集群的预置、扩缩和补丁应用的 Kafka 环境。创建集群后会提供用于连接的端点,可以从 Kafka 客户端开始创建主题和收发数据。无需指定 Broker 的实例类型和节点数。入站(ingress)吞吐量的上限为每个集群 200 MBps、每个分区 5 MBps,出站(egress)为每个集群 400 MBps、每个分区 10 MBps。在预置集群中可以细致地自定义 Kafka 的配置参数(retention.ms、max.message.bytes 等)。不过,在 Serverless 中这些设置由系统自动管理。
IAM 认证与访问控制
MSK Serverless 默认使用 IAM 认证。Kafka 客户端使用 AWS 的凭证(IAM 角色)连接 MSK,并通过 IAM 策略设置主题级别的访问控制。可以进行针对特定 IAM 角色仅允许读写特定主题的细粒度控制。无需再像预置集群使用的 SASL/SCRAM 认证那样管理用户名和密码,凭证的轮换也由 IAM 自动处理。对于来自 Lambda 函数或 ECS 任务的连接,仅向执行角色授予访问 MSK 的权限,认证就会完成。
与 EventBridge Pipes 的集成
EventBridge Pipes 是以 MSK 的主题为源,直接连接到 Lambda、Step Functions、SQS、Kinesis Data Streams 等目标的服务。以往需要自行开发和运维 Kafka 消费者应用程序,而使用 Pipes 可以在不编写消费者代码的情况下将事件传递给目标。通过筛选可以根据事件的条件进行选择性处理,通过丰富处理也可以插入由 Lambda 函数进行的数据转换。通过 MSK Serverless + EventBridge Pipes + Lambda 的组合,可以构建无需管理服务器的事件流处理管道。
MSK Serverless 的费用
MSK Serverless 的费用由集群小时、分区小时、存储和数据传输构成。集群每小时约 0.75 美元,分区每分区小时约 0.0015 美元(截至 2026 年 8 月)。存储每 GB 每月约 0.10 美元,数据传输费用的处理方式在定价页面上确认。从费用方面来看,流量断续的工作负载以 Serverless 为候选,24 小时以高吞吐量运行的环境以预置为候选。
Serverless 与预置的选择区分
MSK 有 Serverless 和预置 2 种形态,根据工作负载的性质进行选择。在流量断续且需求难以预测、希望将运维工作量降到最低、希望自动跟上突然的扩展等情况下,适合选择 Serverless。另一方面,在 24 小时稳定持续高吞吐量、希望控制 Kafka 的细致设置、希望根据使用量调整成本等情况下,适合选择预置。也有一种做法是先用 Serverless 快速开始,等负载特性逐渐清晰后再考虑迁移到预置。
主题设计与分区
Kafka 的性能和顺序保证取决于主题和分区的设计。由于分区内会保持消息的顺序,顺序重要的数据通过合适的键汇集到同一分区。增加分区数可以通过并行处理提高吞吐量,但需要与消费者端的配置取得平衡。使用消费者组,可以由多个处理进程分担分区并行消费。键的设计如果有偏差,负载会集中到特定分区,因此选择让数据均匀分布的键是稳定处理的前提。
生产者与消费者的实现
由于 MSK 与 Kafka 兼容,可以直接使用现有的 Kafka 客户端库。在面向无服务器的架构中,可以通过 Lambda 的事件源映射直接订阅 MSK 的主题,省去消费者应用程序的运维。如果希望在组织内统一消息的结构,就与 Glue Schema Registry 组合,在保持 Schema 一致性的同时管理兼容性。在生产者端,配置消息的批量发送和压缩,以提高吞吐量和效率。由于认证通过 IAM 角色完成,连接信息的管理变得简洁。
监控与运维
事件流处理的健康状况通过消费者延迟(未处理消息的积压量)来衡量。如果延迟持续增加,说明消费端没有跟上生产端,因此重新审视消费者的并行度和分区数。通过 CloudWatch 的指标监控吞吐量、分区状态和错误,并通过告警检测异常。由于 Serverless 对吞吐量和分区数有上限,在设计时确认预期负载是否在范围内。如果事先确定消息的保留期以及处理失败时的处理方式,运维就会稳定。
总结
MSK Serverless 是将 Kafka 集群的管理交给 AWS,让用户能够专注于构建事件流处理的服务。通过 IAM 认证简化凭证管理,通过 EventBridge Pipes 减少消费者的开发。在保持 Kafka 生态系统兼容性的同时,可以采用无需管理服务器的运维形式。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。