通过 Amazon Kinesis Streams,可以构建用于处理或分析流数据的自定义应用程序,以满足特定需求。您可以配置数以万计的数据创建器,连续不断地将数据变成 Amazon Kinesis 流。例如,来自网站点击流、应用程序日志和社交媒体馈送内容的数据。在不到一秒时间里,您的 Amazon Kinesis 应用程序便可以从数据流读取和处理数据。

在下面的架构图表中,Amazon Kinesis Streams 用作大数据解决方案的网关。不同来源的数据被转换成 Amazon Kinesis 流,然后流中的数据再被不同的 Amazon Kinesis 应用程序使用。在此示例中,一个应用程序(显示为黄色)正在对流数据运行实时控制面板。另一个应用程序(显示为红色)执行着简单的聚合并将处理后的数据发给 Amazon S3。Amazon S3 中的数据将获得进一步处理并储存在 Amazon Redshift 中,以便进行复杂分析。第三个应用程序(显示为绿色)将原始数据传送到 Amazon S3,之后这些数据还会存档到 Amazon Glacier,以实现长期的低成本存储。注意,全部三条数据处理管道是同时并行工作的。Amazon Kinesis Streams 可以根据解决方案的需要支持任意数量的数据流使用者,而不对性能造成任何影响。

开始免费使用 AWS

创建免费账户
或登录到控制台
kinesis-architecture-crop

分片是 Amazon Kinesis 数据流的基本吞吐量单位。一个分片提供 1MB/秒数据输入和 2MB/秒输入输出容量。一个分片最高可支持每秒 1 000 个 PUT 记录。创建数据流时,您将指定所需的分片数量。例如,您可以创建具有两个分片的数据流。这一数据流具有 2MB/秒数据输入和 4MB/秒数据输出的吞吐量,并允许最多 2 000 个 PUT 记录。您可以在 Amazon Kinesis Streams 中监控分片级别指标,并在数据吞吐量因对数据流进行重新分片而发生变化时动态添加或删除分片。

记录是存储在 Amazon Kinesis 数据流中的数据单位。记录由序列号、分区键和数据块组成。数据块是您的数据生产者添加到数据流的重要数据。数据块的最大尺寸(Base64 编码前的数据有效载荷)是 1 兆字节 (MB)。

分区键用于隔离和路由数据记录到不同的数据流分片。分区键由您的数据生产者在输入数据到 Amazon Kinesis 数据流时指定。例如,假定您的 Amazon Kinesis 数据流具有两个分片(分片 1 和分片 2)。您可以将数据创建器配置为使用两个分区键(键 A 和键 B),以将所有带键 A 的数据记录输入分片 1,同时将所有带键 B 的数据记录输入分片 2。

序列号是每个数据记录的唯一标识符。当数据创建器调用 PutRecordPutRecords API 以添加数据到 Amazon Kinesis 流时,Amazon Kinesis Streams 分配序列号。同一分区键的序列号通常会随时间变化增加;PutRecordPutRecords 请求之间的时间段越长,序列号则越大。


注册 Amazon Web Services 后,可按以下步骤使用 Amazon Kinesis Streams:

  • 通过 Amazon Kinesis 管理控制台或 Amazon Kinesis CreateStream API 创建 Amazon Kinesis 数据流。
  • 配置您的数据生产者,将数据持续输入 Amazon Kinesis 数据流。
  • 构建 Amazon Kinesis 应用程序,读取和处理来自 Amazon Kinesis 流的数据。

数据创建器可通过 Amazon Kinesis Streams API、Amazon Kinesis Producer Library (KPL)Amazon Kinesis Agent 将数据输入 Amazon Kinesis 数据流。

 

Amazon Kinesis Streams 提供了两个将数据输入到 Amazon Kinesis 流的 API:PutRecord PutRecordsPutRecord 允许在 API 调用中提供一条数据记录,PutRecords 允许在 API 调用中提供多条数据记录。

Amazon Kinesis Producer Library (KPL) 是易于使用且高度可配置的程序库,可以帮助您把数据放到 Amazon Kinesis 数据流中。Amazon Kinesis Producer Library (KPL) 呈现了简单的异步可靠界面,使您能够快速使用最少客户资源实现高创建器吞吐量。

Amazon Kinesis Agent 是一款预构建的 Java 应用程序,可提供简单的方法来收集数据并将其发送到 Amazon Kinesis 流。您可以在基于 Linux 的服务器环境(如 Web 服务器、日志服务器和数据库服务器)上安装此代理。代理监控特定文件并持续发送数据到数据流。


Amazon Kinesis 应用程序是一种数据使用者,用于读取和处理来自 Amazon Kinesis 数据流的数据。您可以使用 Amazon Kinesis API 或 Amazon Kinesis 客户端库 (KCL) 构建 Amazon Kinesis 应用程序。

Amazon Kinesis 客户端库 (KCL) 是一个预建的库,可帮助您轻松构建 Amazon Kinesis 应用程序,用以读取和处理来自 Amazon Kinesis 数据流的数据。KCL 可以处理各种复杂的问题,如适应流量的变化、均衡流数据负载、协调分布式服务以及以容错方式处理数据。KCL 使您能够在专注于业务逻辑的同时构建 Amazon Kinesis 应用程序。

Amazon Kinesis 连接件库是一个预建库,帮助您轻松集成 Amazon Kinesis 与其他 AWS 服务和第三方工具。使用 Amazon Kinesis 连接件库需要 Amazon Kinesis 客户端库 (KCL)。该库的最新版本为 Amazon DynamoDBAmazon RedshiftAmazon S3Elasticsearch 提供了连接件。该库还包括各种类型的示例连接件,并有 Apache Ant 来构建运行示例的文件。

Amazon Kinesis Storm Spout 是一个预建库,可帮助您轻松集成 Amazon Kinesis Streams 与 Apache Storm。最新版本的 Amazon Kinesis Storm Spout 从 Amazon Kinesis 数据流提取数据,再作为元组发出。您将此数据源添加到 Storm 拓扑中,以将 Amazon Kinesis Streams 作为一种可靠、可扩展、流捕获、存储以及重播服务来使用。


Amazon Kinesis Streams 与 Amazon CloudWatch 集成,以便您可以为 Amazon Kinesis 数据流以及其中的分片收集、查看和分析 CloudWatch 指标。有关 Amazon Kinesis Streams 指标的更多信息,请参阅 Monitoring Amazon Kinesis with Amazon CloudWatch

Amazon Kinesis Streams 与 AWS Identity and Access Management (IAM) 集成,让您能够安全控制对 AWS 服务和用户资源的访问权限。例如,您可以创建仅允许特定用户或组输入数据到 Amazon Kinesis 数据流的策略。有关 Amazon Kinesis 数据流的访问管理和控制的更多信息,请参阅使用 LAM 控制对 Amazon Kinesis 资源的访问权限

Amazon Kinesis Streams 与 AWS CloudTrail 集成,后者是记录您账户的 AWS API 调用并向您提供日志文件的服务。有关 API 调用日志记录和支持的 Amazon Kinesis API 列表的更多信息,请参阅 Logging Amazon Kinesis API calls Using AWS CloudTrail

您可以通过创建 VPC 终端节点来实现从 Amazon Virtual Private Cloud (VPC) 对 Kinesis Streams API 进行私有访问。借助 VPC 终端节点,VPC 和 Kinesis Streams 之间的路由可由 AWS 网络处理,而无需使用 Internet 网关、NAT 网关或 VPN 连接。Kinesis Streams 所使用的最新一代 VPC 终端节点由 AWS PrivateLink 提供支持。AWS PrivateLink 是一种通过使用 VPC 中带有私有 IP 的弹性网络接口来支持各 AWS 服务之间的私有连接的技术。有关更多信息,请参阅 AWS PrivateLink 文档

您可采用服务器端加密或客户端加密来对放入 Kinesis Stream 的数据进行加密。服务器端加密是一项完全托管的功能,可在您向数据流放入数据和从中提取数据时自动对数据进行加密和解密。或者,您也可以先在客户端加密数据,再将其放入数据流。如需了解更多信息,请参阅 Kinesis Streams 常见问题的安全部分。

Amazon Kinesis 让您能够标记 Amazon Kinesis 数据流,从而更加轻松地管理资源和成本。标签是以键-值对表示的用户定义的标记,帮助组织 AWS 资源。例如,您可以使用成本中心标记 Amazon Kinesis 数据流,从而基于成本中心分类和跟踪 Amazon Kinesis。有关更多信息,请参阅 Tagging Your Amazon Kinesis Streams