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 为键会导致特定分片出现热点,需要添加随机后缀来分散负载。

共有するXB!