Amazon Kinesis Data Streams 入门 »
参阅有关 Amazon Kinesis Data Streams 的最新资讯 »
Amazon Kinesis Data Streams 是一种可大规模扩展、高度持久的数据摄取和处理服务,针对流数据进行了优化。您可以配置数以万计的数据创建器,连续不断地将数据传输到 Kinesis 数据流。数据将在几毫秒内传输到您的 Amazon Kinesis 应用程序,这些应用程序将按生成顺序接收数据记录。
Amazon Kinesis Data Streams 与多项 AWS 服务集成,其中包括以近乎实时的方式转换流数据并将其传输到 Amazon S3 等数据湖的 Amazon Kinesis Data Firehose、用于托管流处理的适用于 Apache Flink 的亚马逊托管服务、用于事件或记录处理的 AWS Lambda、用于私有连接的 AWS PrivateLink、用于指标和日志处理的 Amazon Cloudwatch 以及用于服务器端加密的 AWS KMS。
在下面的架构图表中,Amazon Kinesis Data Streams 被用作大数据解决方案的网关。不同来源中的数据被传输到 Amazon Kinesis 流中,然后流中的数据再被不同的 Amazon Kinesis 应用程序使用。在此示例中,一个应用程序(显示为黄色)正在对流数据运行实时控制面板。另一个应用程序(显示为红色)执行简单的聚合并将处理后的数据发给 Amazon S3。Amazon S3 中的数据将获得进一步处理并储存在 Amazon Redshift 中,以便进行复杂分析。第三个应用程序(显示为绿色)将原始数据传送到 Amazon S3,之后这些数据还会存档到 Amazon Glacier,以实现低成本的长期存储。请注意,全部三条数据处理管道是同时并行工作的。
重要概念
数据创建器
数据创建器是一种应用程序,它通常会将生成的数据记录传送到 Kinesis 数据流。数据创建器可以为记录分配分区键。分区键最终决定哪个分区为数据流提取数据记录。
数据使用器
数据使用器是一种分布式 Kinesis 应用程序或 AWS 服务,流中所有分区生成数据时,它进行检索。大多数数据使用器会检索分区中的最新数据,以支持实时分析或数据处理。
数据流
数据流是分区的逻辑分组。数据流中的分区数量没有限制(如果需要更多分区,您可以请求提高限制)。数据流将默认保留数据 24 小时,也可以选择保留长达 365 天。
分区
分区是 Amazon Kinesis 数据流的基本吞吐量单位。
- 分区是一种仅附加日志和流功能的单位。分区包含按到达时间排序的有序记录序列。
- 一个分区每秒可以提取多达 1000 个数据记录,或每秒可以提取 1MB 数据。添加更多分区可以提高提取能力。
- 使用 AWS 控制台、UpdateShardCount API,在数据吞吐量发生变化时动态添加或删除流中的分区。通过 AWS Lambda 或使用自动扩展实用工具触发自动扩展。
- 当使用器使用增强型扇出时,一个分区可以为每个注册使用增强型扇出的数据使用器提供每秒 1MB 的数据输入和每秒 2MB 的数据输出。
- 当使用器不使用增强型扇出时,分区提供每秒 1MB 的输入和每秒 2MB 的数据输出,并且这些使用器将与不使用增强型扇出的任何使用器共享此输出。
- 创建流时,您需要指定所需的分区数量,您可以随时更改该数量。例如,您可以创建具有两个分区的流。如果您有 5 个使用增强型扇出的数据使用器,此流可提供每秒高达 20MB 的总数据输出(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。
序列号
序列号是每个数据记录的唯一标识符。当数据创建器调用 PutRecord 或 PutRecords API 以向 Amazon Kinesis 数据流添加数据时,Amazon Kinesis Data Streams 会分配序列号。同一分区键的序列号通常会随时间变化增加;PutRecord 或 PutRecords 请求之间的时间段越长,序列号则越大。
使用 Kinesis Data Streams
注册 Amazon Web Services 后,可按以下步骤使用 Amazon Kinesis Data Streams:
- 通过 Amazon Kinesis 管理控制台或 Amazon Kinesis CreateStream API 创建 Amazon Kinesis 数据流。
- 配置您的数据创建器,将数据持续传输到 Amazon Kinesis 数据流。
- 构建 Amazon Kinesis 应用程序,读取和处理来自 Amazon Kinesis 数据流的数据。
将数据传输到流中
数据创建器可通过 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:PutRecord 和 PutRecords。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 数据消防站的来源。
适用于 Apache Flink 的亚马逊托管服务
借助适用于 Apache Flink 的亚马逊托管服务,您可以轻松查询流数据或使用 Apache Flink 构建串流应用程序,从而获得切实可行的见解并及时响应您的业务和客户需求。您可以将 Kinesis 数据流用作适用于 Apache Flink 的亚马逊托管服务应用程序的来源和目标。
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 Connector Library
Amazon Kinesis Connector Library 是一个预构建库,可帮助您轻松完成 Amazon Kinesis 与其他 AWS 服务和第三方工具的集成。使用 Amazon Kinesis 连接器库需要 Amazon Kinesis Client Library (KCL)。该库的最新版本为 Amazon DynamoDB、Amazon Redshift、Amazon S3 和 Amazon 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 网络处理,而无需使用互联网网关、NAT 网关或 VPN 连接。Kinesis Data Streams 使用的最新一代 VPC 终端节点由 AWS PrivateLink 提供支持。AWS PrivateLink 是一种通过使用 VPC 中带有私有 IP 的弹性网络接口 (ENI) 来支持各 AWS 服务之间的私有连接的技术。有关 PrivateLink 的更多信息,请参阅 AWS PrivateLink 文档。
在不牺牲性能的情况下扇出 Kinesis Data Streams 数据
增强型扇出让客户能够增加并行地从流中读取数据的使用器数量,同时保持高性能。您可以使用增强型扇出和 HTTP/2 数据检索 API 将数据扇出到多个应用程序,通常在到达后 70 毫秒内。
加密 Kinesis Data Streams 数据
您可采用服务器端加密或客户端加密,对传输到 Kinesis Data Streams 的数据进行加密。服务器端加密是一项完全托管的功能,可在您向数据流传输数据和从中提取数据时自动对数据进行加密和解密。或者,您也可以先在客户端加密数据,再将其传输到数据流。如需了解更多信息,请参阅 Kinesis Data Streams 常见问题的安全部分。
Amazon Kinesis Data Firehose 与适用于 Apache Flink 的亚马逊托管服务的集成
使用数据流作为 Kinesis Data Firehose 的来源,以在将数据传输到 S3、Redshift、Elasticsearch 和 Splunk 时即时转换数据。附加适用于 Apache Flink 的亚马逊托管服务应用程序,使用标准 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 Data Streams 成本进行分类和跟踪。有关更多信息,请参阅为您在 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)
精选解决方案
适用于 Amazon Kinesis 的亚马逊云科技流数据解决方案提供了多种 Amazon CloudFormation 模板;数据在模板中流经生成器、流式存储、使用者和目的地。为支持多种使用案例和业务需求,此解决方案提供了四种 Amazon CloudFormation 模板。这些模板已配置为应用最佳实践,从而可使用控制面板和警报来监控功能是否正常以及保护数据。