【AWS】Amazon Kinesis Data Streams (KDS)
2025年07月20日
文章浏览:41
【AWS】Amazon Kinesis Data Streams (KDS) 

Amazon Kinesis Data Streams (KDS) 是一项完全托管的、可大规模扩展且高度持久的数据摄取和处理服务,专门用于实时处理大规模的流数据。它允许您从成千上万个数据生成器(生产者)持续地将数据添加到 Kinesis 流中,并让您的 Kinesis 应用程序(消费者)在不到一秒的时间内从流中读取和处理数据。

您可以将 Amazon Kinesis Data Streams 想象成一个**“高速、可靠的实时数据管道”**。它能够捕获、存储和处理来自各种来源(如网站点击流、应用程序日志、IoT 传感器数据、社交媒体源等)的连续数据流,并使其在几毫秒内可供实时分析、应用程序集成或数据湖填充。

AWS Kinesis Data Streams 的核心功能和优势

Kinesis Data Streams 的设计目标是让实时数据处理变得简单、弹性且经济高效。

  1. 实时数据摄取和处理:持续数据收集: 能够从数以万计的来源持续收集数据,无需等待批量处理。低延迟: 数据在几毫秒内即可供 Kinesis 应用程序读取和处理,支持实时分析和响应。防止数据丢失: 数据生成后立即推送到 Kinesis 流中,防止因数据创建器故障而导致数据丢失。
  2. 大规模可扩展性:自动扩展: Kinesis Data Streams 能够自动预置和扩展容量,以每秒传输千兆字节的数据,支持从每秒几个记录到每秒数百万个记录的任何吞吐量需求。分片 (Shards): Kinesis 流由一个或多个分片组成,每个分片提供固定的容量单位(例如,每个分片每秒最多支持 1MB 写入和 2MB 读取)。您可以根据需要动态增加或减少流中的分片数量。按需模式 (On-demand mode): 提供无需预置或管理分片容量的模式,Kinesis Data Streams 会自动根据工作负载变化调整吞吐量。
  3. 高持久性和可靠性:数据冗余: 流数据在 AWS 区域中的多个可用区同步复制,防止在发生应用程序故障、个别机器故障或设施故障时丢失数据。数据保留: 默认情况下,数据在 Kinesis 流中保留 24 小时,但您可以选择将其保留长达 365 天,以便进行数据回溯或支持多个消费者。不可变记录: 一旦数据记录存储在 Kinesis Data Streams 中,它们就是不可变的,无法修改。
  4. 易用性和集成:完全托管服务: 您无需管理任何服务器或底层基础设施。AWS 负责所有运行应用程序所需的容量预置、管理和扩展。Kinesis Producer Library (KPL) 和 Kinesis Client Library (KCL): AWS 提供这些库,简化了向 Kinesis 流添加数据(生产者)和从流中读取数据(消费者)的应用程序开发。与 AWS 服务集成: 与其他 AWS 服务(如 AWS Lambda、Amazon Kinesis Data Firehose、Amazon Kinesis Data Analytics、Amazon S3、Amazon DynamoDB、Amazon CloudWatch、AWS KMS)内置集成,方便构建端到端的数据流解决方案。
  5. 并行处理:多个 Kinesis 应用程序可以同时处理同一个流。例如,一个应用程序可以运行实时分析,另一个应用程序可以将数据从同一个 Kinesis 流发送到 Amazon S3 进行存储。

AWS Kinesis Data Streams 的工作原理

Amazon Kinesis Data Streams 的核心是流 (Stream) 和分片 (Shard)

  1. 数据生产者 (Data Producers):数据生产者(例如,Web 服务器、IoT 设备、应用程序日志、社交媒体源)持续地将数据记录发送到 Kinesis Data Stream。每条数据记录包含一个数据 blob(实际数据)、一个分区键 (Partition Key) 和一个序列号 (Sequence Number)。分区键: 用于将数据记录映射到特定的分片。相同分区键的数据记录将始终路由到同一个分片,从而保持数据顺序。
  2. Kinesis Data Stream (数据流):数据流是连续的数据流,由一个或多个分片组成。数据记录一旦写入分片,就是不可变的,并按照到达顺序存储。数据在分片中保留您配置的时间(24 小时到 365 天)。
  3. 数据消费者 (Data Consumers):数据消费者是 Kinesis 应用程序,它们从 Kinesis Data Stream 中读取和处理数据记录。消费者以生成顺序接收分片中的数据记录。Kinesis Client Library (KCL): KCL 简化了消费者应用程序的开发,它处理了许多复杂任务,如负载均衡、检查点、容错和适应分片拆分/合并。增强型扇出 (Enhanced Fan-out): 允许每个消费者获得每个分片 2MB/秒的专用吞吐量,避免了多个消费者共享分片吞吐量时可能出现的瓶颈,从而实现更低的延迟。
  4. 数据流向:生产者将数据推送到 Kinesis Data Stream。数据流将数据存储在分片中。消费者从分片中拉取数据进行处理。处理后的数据可以发送到其他 AWS 服务(如 S3、Lambda、DynamoDB、Redshift)进行存储、分析或进一步处理。

AWS Kinesis Data Streams 的典型用例

  • 实时日志和事件数据收集:从应用程序日志、点击流数据、传感器数据和应用程序内用户事件中摄取和收集 TB 级数据,用于实时控制面板、生成指标和将数据传送到数据湖。
  • 实时数据分析:为点击流数据、IoT 传感器数据等高频事件数据构建应用程序,并在几秒钟而不是几天内获得洞察。例如,实时监控网站流量、用户行为或工业设备状态。
  • 事件驱动型应用程序:快速与 AWS Lambda 配对,以响应或调整环境中事件驱动应用程序中的即时事件,无论规模大小。
  • 复杂流处理:构建 Kinesis 应用程序和数据流的有向无环图 (DAG),其中一个或多个 Kinesis 应用程序将数据添加到另一个 Kinesis 流中以供进一步处理,形成流处理的后续阶段。
  • 移动数据捕获:将移动应用程序配置为从成千上万个设备将数据推送到 Kinesis Data Streams 中,以便在移动设备上生成数据时立即进行查看和处理。
  • 游戏数据源:持续收集玩家与游戏的互动数据,并能将数据馈送到游戏平台中,根据玩家的操作和行为设计引人入胜的动态体验。

总结来说,Amazon Kinesis Data Streams 是一项功能强大、高度可扩展且完全托管的实时数据流服务,它通过提供可靠的数据摄取、存储和处理能力,帮助企业轻松构建和运行各种实时应用程序,从而从不断流动的数据中快速获取洞察并做出响应。

关注 收藏