使用 Amazon Kinesis 构建实时数据管道 - Data Streams 与 Data Firehose 的选型

通过 Data Streams 摄取实时数据,利用 Data Firehose 自动投递至 S3、Redshift、OpenSearch。解析分片设计与按需模式的选型,构建流式处理管道。

Kinesis 概述

Kinesis 是一组提供实时流数据采集、处理和分析的服务。Data Streams 通过自定义消费者实现实时处理,Data Firehose 自动投递至 S3 和 Redshift,Managed Apache Flink 则对流数据执行 SQL/Flink 处理。

Data Streams 与 Firehose 的选型

Data Streams 以分片为单位管理吞吐量,通过 Lambda 或 KCL(Kinesis Client Library)实现自定义处理。适用于需要亚秒级延迟的实时告警,或多个消费者读取同一流的场景。Data Firehose 自动缓冲来自生产者的数据,并投递至 S3、Redshift、OpenSearch、Splunk。投递前可应用数据转换(Lambda)和格式转换(Parquet),无需实现消费者。日志聚合与分析平台投递最适合使用 Firehose。

Data Streams 的设计模式

Data Streams 的分片数由吞吐量需求决定。每个分片提供写入 1 MB/秒(1,000 条记录/秒)、读取 2 MB/秒的能力。按需模式下分片数自动调整,预置模式下需手动设置。通过分区键设计控制数据分布,防止热分片(特定分片的负载倾斜)。启用增强扇出后,每个消费者获得专用的 2 MB/秒读取吞吐量,多个消费者互不影响地处理数据。KCL(Kinesis Client Library)自动管理分片再平衡和检查点,简化消费者应用程序的开发。 如需系统学习 Kinesis,可参考相关书籍 (Amazon)

Kinesis 的成本优化

Data Streams 预置模式按分片小时(约 0.015 美元/小时)和 PUT 负载单位(25KB 为单位,每 100 万单位约 0.014 美元)计费。按需模式按数据摄取量(每 GB 约 0.08 美元)和读取量计费,适用于流量波动的工作负载。Data Firehose 仅按摄取数据量(每 GB 约 0.029 美元)计费,无需管理分片。通过记录聚合(将多条小记录合并为一次 PUT)减少 PUT 负载单位数,优化 Data Streams 成本。将数据保留期从默认的 24 小时延长会产生额外费用,应根据重放需求设置为最短时间。

总结

Kinesis 是实时流数据的处理基础设施。通过 Data Streams 实现自定义实时处理,利用增强扇出实现多消费者并行处理。通过 Data Firehose 自动化向 S3 和 Redshift 的投递,利用记录聚合减少 PUT 负载单位数以优化成本。按需模式还可消除分片管理的运维负担。