Amazon Kinesis
全托管数据流服务套件,可实时大规模采集、处理和分析流式数据
概述
Amazon Kinesis 是一套用于大规模处理实时流式数据的服务套件。核心服务 Kinesis Data Streams 可以低延迟每秒摄入数百万条记录,多个消费者可并行处理。Kinesis Data Firehose 可构建将摄入数据自动投递到 S3、Redshift、OpenSearch 等目标的 ETL 管道,无需编码即可运维。广泛应用于 IoT 设备遥测、Web 应用点击流、金融交易实时分析等批处理无法满足的场景。
Data Streams 与 Data Firehose 的选型标准
Kinesis Data Streams 是以分片为单位控制吞吐量的基础流式平台,每个分片具有写入 1 MB/秒、读取 2 MB/秒的容量。消费者端可自由实现逻辑,适合使用 Lambda 或自定义应用进行实时处理。Data Firehose 则是自动化数据转换 (通过 Lambda 加工) 和向目标写入的托管服务,无需管理分片。选型标准很明确:实时处理延迟要求在 200 毫秒以下时选 Data Streams,可接受数十秒到数分钟延迟且仅需向目标写入时选 Firehose。
分片设计与数据保留策略
Data Streams 设计中最重要的是分片数量的估算。按需模式可根据流量自动扩缩,但按峰值吞吐量计费,因此对于稳定工作负载,预置模式可能便宜 50% 以上。数据保留期最长可延长至 365 天,相比 Azure Event Hubs Standard 层 (最长 7 天) 在需要长期保留的场景中更具优势。启用 Enhanced Fan-Out 后,每个消费者可获得专用的 2 MB/秒读取吞吐量,但每个消费者会产生额外费用,消费者数量达到 3 个以上时应评估性价比。数据分析相关书籍 (Amazon) 可帮助学习流式处理的设计模式。
实时仪表板构建示例
Kinesis 的典型应用模式是构建实时仪表板。将 Web 应用的访问日志发送到 Kinesis Data Streams,通过 Lambda 实时聚合后写入 DynamoDB,再经 API Gateway 向前端分发,这是典型架构。在 IoT 设备遥测采集中,从数万台设备每秒发送的传感器数据由 Data Streams 接收,Firehose 存储到 S3 的同时,Lambda 实时检测异常值并通过 SNS 通知的双层架构非常有效。在金融交易实时分析中,分区键的设计至关重要,如果以交易 ID 为键会导致特定分片出现热点,需要添加随机后缀来分散负载。