Amazon Kinesis Data Streams 入门 »

了解 Amazon Kinesis Data Streams 的新增功能 »

请求为您的概念验证或评估提供支持 »

Amazon Kinesis Data Streams 是一种针对流数据进行优化的数据注入和处理服务,它支持大规模扩展且高度持久。您可以配置数以万计的数据创建器,连续不断地将数据输入 Kinesis 数据流。您的 Amazon Kinesis 应用程序可在几毫秒内收入数据,并且这些应用程序将按数据生成顺序接收数据记录。

Amazon Kinesis Data Streams 与众多 AWS 服务实现了集成,其中包括可实现近乎实时的转换并将流数据传输到 AWS 数据湖(例如 Amazon S3)的 Amazon Kinesis Data Firehose,用于进行托管式流处理的 Kinesis Data Analytics,用于进行事件或记录处理的 AWS Lambda,用于建立私有连接的 AWS PrivateLink,用于进行指标和日志处理的 Amazon Cloudwatch,以及用于实现服务器端加密的 AWS KMS

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

kinesis-architecture-crop

重要概念

数据创建器

数据创建器是一种应用程序,它通常将生成的数据记录传送到 Kinesis 数据流。数据创建器将分区键分配给记录。分区键最终确定哪个分区为数据流提取数据记录。

数据使用器

数据使用器是一种分布式 Kinesis 应用程序或 AWS 服务,用于在流生成时从流中的所有分区中检索数据。大部分数据使用器会检索分区中的最新数据,从而实现实时分析或数据处理。

数据流

数据流是分区的逻辑分组。一个数据流中的分区数量没有限制(如果需要更多,可以请求提高限制)。数据流会将数据保留 24 小时,或者在启用延长保留的情况下最多将数据保留 7 天。

分区

分区是 Amazon Kinesis 数据流的基本吞吐量单位。

  • 分区是只能附加的日志和流功能单位。分区包含按到达时间排序的有序记录序列。
  • 一个分区最多可每秒提取 1000 个数据记录,或 1MB/秒。添加更多分区可以增加提取能力。
  • 您可以随着数据吞吐量的变化动态添加或删除流中的分区,方法有以下几种:使用 AWS 控制台,使用 UpdateShardCount API,通过 AWS Lambda 触发自动扩展,或使用自动扩展实用工具
  • 当使用器使用增强型扇出时,一个分区为每个注册使用增强型扇出的数据使用器提供 1MB/秒的数据输入和 2MB/秒的数据输出。
  • 当使用器未使用增强型扇出时,一个分区提供 1MB/秒的输入和 2MB/秒的输出,并且此输出与任何未使用增强型扇出的使用器共享。
  • 您需要指定创建流时所需的分区数,并可以随时更改数量。例如,您可以创建具有两个分区的流。如果您有 5 个使用增强型扇出的数据使用器,此流可以提供高达 20 MB/秒的总数据输出(2 个分区 x 2MB/秒 x 5 个数据使用器)。当数据使用器未使用增强型扇出时,此流的吞吐量为 2MB/秒的数据输入和 4MB/秒的数据输出。无论是什么情况,此流最多可支持每秒 2000 个 PUT 记录,或 2MB/秒数据传入,以先达到的限制为准。
  • 您可以监控 Amazon Kinesis Data Streams 中的分区级指标。

数据记录

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

分区键

分区键通常是有意义的标识符,例如用户 ID 或时间戳。分区键由数据创建器在将数据放入 Amazon Kinesis 数据流时指定,对使用器非常有用,因为使用器可以使用分区键重放或构建与分区键关联的历史记录。分区键也可用于将数据记录隔离并路由到不同的数据流分区。例如,假定您的 Amazon Kinesis 数据流具有两个分区(分区 1 和分区 2)。您可以将数据创建器配置为使用两个分区键(键 A 和键 B),以将所有带键 A 的数据记录输入分片 1,同时将所有带键 B 的数据记录输入分片 2。

序列号

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

使用 Kinesis Data Streams

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

将数据输入到流

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

Amazon Kinesis Data Generator

使用 Amazon Kinesis Data Generator 将示例数据输入到 Kinesis 数据流或 Kinesis 数据管道。

Amazon Kinesis Data Streams API

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

Amazon Kinesis Producer Library (KPL)

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

Amazon Kinesis Agent

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

运行完全托管的流处理应用程序或构建自己的应用程序

使用 AWS 服务运行完全托管的流处理应用程序或构建自己的应用程序

Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose 是将流数据可靠地转换并加载到数据存储和分析工具的最简单方式。您可以将 Kinesis 数据流用作 Kinesis 数据管道的来源。

Amazon Kinesis Data Analytics

借助 Amazon Kinesis Data Analytics,您能够使用 SQL 查询流数据或构建整个流式处理应用程序,以便获取切实见解并及时响应您的业务和客户需求。您可以将 Kinesis 数据流用作 Kinesis 数据分析应用程序的源和目标。

AWS Lambda

您可以订阅 Lambda 函数以自动读取 Kinesis 数据流中的记录。AWS Lambda 通常用于进行逐个记录的(也称为基于事件的)流处理。

Amazon Kinesis Client Library (KCL)

Amazon Kinesis Client Library (KCL) 是一个预构建库,可帮助您轻松构建 Amazon Kinesis 应用程序,用以读取和处理来自 Amazon Kinesis 数据流的数据。KCL 可以处理各种复杂的问题,如适应流量的变化、均衡流数据负载、协调分布式服务以及以容错方式处理数据。KCL 使您能够在专注于业务逻辑的同时构建 Amazon Kinesis 应用程序。从 KCL 2.0 开始,您可以使用低延迟 HTTP/2 流 API 和增强型扇出检索流中的数据。

Amazon Kinesis 连接件库

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

Amazon Kinesis Storm Spout

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

管理功能

从 Amazon VPC 对 Kinesis Data Streams API 进行私有访问

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

扇出 Kinesis Data Streams 数据而无需牺牲性能

增强型扇出功能允许客户在保持性能的同时扩展并行读取流的使用器数量。您可以使用增强型扇出和 HTTP/2 数据检索 API 将数据扇出到多个应用程序,通常在 70 毫秒内到达。

加密 Kinesis Data Streams 数据

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

Amazon Kinesis Data Firehose 和 Amazon Kinesis Data Analytics 集成

使用数据流作为 Kinesis Data Firehose 的源,以在将数据传送到 S3、Redshift、Elasticsearch 和 Splunk 时实时转换数据。附加 Kinesis Data Analytics 应用程序以使用标准 SQL 实时处理流数据,无需学习新的编程语言或处理框架。

Amazon CloudWatch 集成

Amazon Kinesis Data Streams 与 Amazon CloudWatch 进行了集成,以便您可以轻松为 Amazon Kinesis 数据流以及其中的分区收集、查看和分析 CloudWatch 指标。有关 Amazon Kinesis Data Streams 指标的更多信息,请参阅利用 Amazon CloudWatch 监控 Amazon Kinesis 服务

AWS IAM 集成

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

AWS CloudTrail 集成

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

标记支持

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

教程

使用 Amazon Kinesis Data Streams 分析股票数据

本教程将带您一步步学习如何创建 Amazon Kinesis 数据流、发送模拟股票交易数据到流中以及编写应用程序以处理数据流中的数据。 

使用 Amazon Kinesis 实时分析流数据 (ABD301)

Amazon Kinesis 使您可以轻松收集、处理和分析实时流数据,以便您及时获得见解并对新信息快速做出响应。在本次研讨会中,我们通过用于进行数据摄取的 Kinesis Streams、用于实时处理的 Kinesis Analytics 和用于实现持久性的 Kinesis Firehose 来展示端到端的流数据解决方案。我们将详细了解一下如何使用流数据编写 SQL 查询,并讨论用于优化和监控 Kinesis Analytics 应用程序的最佳实践。最后,我们将讨论如何预估整个系统的成本。

观看研讨会录像 | 下载演示文稿

研讨会:在 AWS 上构建您的首款大数据应用程序 (ABD317)

想要增加您关于 AWS 大数据 Web 服务的知识并在云上启动您的首款大数据应用程序?我们将带您了解如何将大数据处理简化为数据总线形式 (包含摄取、存储、处理和虚拟化)。您可以使用 Amazon Athena、Amazon Kinesis、Amazon DynamoDB 和 Amazon S3 等 AWS 托管服务构建大数据应用程序。同时,我们将了解大数据应用程序的架构设计模式,并授予您访问课后练习用实验的权限,以便您可以自己重建和自定义应用程序。您应该带上自己的笔记本电脑,并熟悉 AWS 产品,以充分利用本次研讨会。

下载演示文稿

研讨会:不要等到明天:如何使用流数据实时洞察您的业务 (ABD321)

在最近几年,连接设备和实时数据源的数量呈爆炸式增长。因此,数据不断地生成,而且生成速度也在加快。企业无需再等数小时或数天才能使用该数据。要获取最有价值的见解,他们必须立即使用该数据,以便对新信息做出迅速响应。在本次研讨会中,您将了解如何利用流数据源以近乎实时的方式进行分析和做出响应。您会看到真实流数据场景的几个要求,并负责制定能够通过 Amazon Kinesis、AWS Lambda 和 Amazon SNS 等服务成功满足要求的解决方案。

下载演示文稿

Amazon Flex 如何使用实时分析按时交付软件包 (ABD217)

对于所有使用批处理数据分析工具探索流分析优势的企业和客户来说,缩短通过数据获取可行性见解所需的时间至关重要。了解最佳实践,将您的架构从数据仓库和数据库扩展到实时解决方案。了解如何使用 Amazon Kinesis 获取实时数据见解并将其与 Amazon Aurora、Amazon RDS、Amazon Redshift 和 Amazon S3 集成。Amazon Flex 团队描述了他们如何在 Amazon Flex 移动应用程序中使用流分析,Amazon Delivery Driver 使用该应用程序每月按时交付数百万个软件包。他们讨论了能够克服将现有批处理数据迁移到流处理数据所面临的挑战并进而实现从批处理系统向实时系统迁移的架构,还讨论了如何从实时分析中获益。

观看研讨会录像 | 下载演示文稿

AWS 上的实时流处理应用程序:使用案例和模式 (ABD203)

要在市场中获胜并提供独特的客户体验,企业必须能够实时使用实时数据来促使快速制定出决策。在本次研讨会中,您将了解常见的流数据处理使用案例和架构。首先,我们将概述流数据和 AWS 流数据功能。接下来,我们来了解几个客户示例以及他们的实时流应用程序。最后,我们将了解一下常见的架构和首要流数据使用案例的设计模式。

观看研讨会录像 | 下载演示文稿

Amazon Kinesis Data Streams 入门

请参阅开发人员指南
准备好开始使用了吗?
注册
还有更多问题?
联系我们