实时数据流处理 - 利用 Amazon Kinesis 实现即时数据处理

讲解结合 Kinesis Data Streams 与 Data Firehose 的实时数据管道的设计模式。介绍分片设计、缓冲、Lambda 转换以及向 S3 / Redshift / OpenSearch 的投递。

实时数据流处理的重要性

在现代业务中,来自 IoT 设备的传感器数据、Web 应用程序的点击流、金融交易的事务日志等大量数据正在实时生成。通过即时处理 / 分析这些数据,可以创造异常检测、实时仪表板、个性化推荐等价值。Amazon Kinesis 是实时收集 / 处理 / 分析流数据的全托管服务。在本地环境构建同等的流处理平台时,通常会运维 Apache Kafka 集群,但会产生Broker 管理、分区再平衡等运维任务。Kinesis 由服务方承担这些运维工作,因此会变得容易专注于数据流处理的业务逻辑。

Kinesis 系列的组成

与 Amazon Kinesis 相关的主要流处理服务有以下 4 个,目前带有 Kinesis 名称的是 Data Streams 和 Video Streams。Kinesis Data Streams 是由自定义应用程序进行实时处理的基础,以分片为单位控制吞吐量。Amazon Data Firehose(原 Kinesis Data Firehose)是将流数据自动投递到 S3、Redshift、OpenSearch 等目标的投递服务。Amazon Managed Service for Apache Flink(原 Kinesis Data Analytics)使用 Apache Flink 实时分析流数据(SQL 应用程序版本已于 2026 年 1 月停用)。Kinesis Video Streams 专门用于视频流的摄取和处理。使用 CLI 创建 Kinesis Data Streams 按需流的示例:通过 aws kinesis create-stream --stream-name click-stream --stream-mode-details StreamMode=ON_DEMAND 创建流。然后设置 Lambda 的事件源映射:通过 aws lambda create-event-source-mapping --function-name process-clicks --event-source-arn arn:aws:kinesis:ap-northeast-1:123456789012:stream/click-stream --starting-position LATEST --batch-size 100 --parallelization-factor 2 启用并行处理。

基于 Lambda 集成的无服务器流处理

Kinesis Data Streams 与 Lambda 的集成是无服务器实时数据处理的代表性模式。Lambda 会自动从 Kinesis 的分片轮询记录,并按批次调用处理函数。使用 Enhanced Fan-Out 时,会为每个消费者分配专用的吞吐量(每个分片 2 MB/秒),多个消费者可以互不影响地并行处理。在 Lambda 的事件源映射中,可以细致地控制批次大小、批处理窗口、并行化系数等,并可以优化处理的延迟和吞吐量。出错时的重试、转发到死信队列、通过二分(bisect)拆分批次等错误处理功能也作为标准提供。在本地环境的 Kafka + 消费者应用程序中,需要自行实现这些功能,开发和运维的负担会增加。

可扩展性与成本效率

Kinesis Data Streams 以分片为单位扩展,每个分片提供写入 1 MB/秒、读取 2 MB/秒的吞吐量。在按需模式下,分片数量会根据流量自动调整。Amazon Data Firehose 按使用量计费。不会产生最低费用或设置费用。可以在 Firehose 内执行数据的压缩和转换。数据保留期默认为 24 小时,最多可延长至 365 天,也支持重新处理和重放的使用场景。

代表性的使用场景与适用判断

实时流处理发挥价值的,是需要在接近数据产生瞬间的时机进行处理 / 判断的场景。即时可视化访问情况和系统状态的实时监控、当场检测欺诈交易的机制、即时响应用户行为的推荐等是典型例子。另一方面,对于每日报告的制作,或集中汇总即可满足需求的任务,批处理更简单、更经济。所要求的即时性,会成为是否应使用流处理的判断标准。判断是否真正需要实时性,并只在需要的部分采用流处理,会带来避免过度复杂化的设计。

总结 - 实时流处理平台的选择

Amazon Kinesis 作为实时数据流处理的全托管平台,可以涵盖从收集到处理、分析、投递的各个环节。凭借按需模式的自动扩展和按使用量计费,可以支持从小规模的 PoC 到大规模的生产工作负载。对于考虑构建实时数据处理平台的组织来说,Kinesis 是候选之一。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享