Kinesis

2025 年 4 月 6 日 | 阅读 4 分钟

在了解 Kinesis 之前,您应该了解流数据。

什么是流数据?

流数据是从数千个数据源不断生成的数据,这些数据源可以同时以小尺寸发送数据记录。

以下是流数据的示例

  • 在线商店的购买
    人们在 amazon.com 上购买东西并生成流数据,该流数据可以是交易、产品等。
  • 股票价格
    股票价格也是流数据的一个例子。
  • 游戏数据
    假设用户正在玩愤怒的小鸟游戏,并且应用程序正在将流数据发送回中央服务器。此流数据可能是“用户正在做什么”、“分数是多少”。
  • 社交网络数据
    社交网络数据也是流数据的另一个例子。假设您访问 Facebook,更新您的状态,并在您朋友的墙上发布帖子。所有这些数据都将被流式传输。
  • 地理空间数据
    当您使用 Uber 并且您的设备已连接到互联网时。 Uber 应用程序会不断地说 Uber 司机在哪里,您在哪里,并且它正在询问地图以给您前往目的地的最佳路线。这也是流数据的一个很好的例子。
  • 物联网传感器数据
    它感知周围的世界,监测温度。

什么是 Kinesis?

Kinesis 是 AWS 上的一个平台,用于发送您的流数据。它使您可以轻松分析加载流数据,并且还使您能够根据您的业务需求构建自定义应用程序。

Kinesis

Kinesis 的核心服务

  • Kinesis Streams
  • Kinesis Firehose
  • Kinesis Analytics

Kinesis Streams

  • Kinesis 流由分片组成。
  • 分片每秒提供 5 次读取事务,最大总数据读取速率为每秒 2MB,每秒最多 1,000 条记录写入,最大总数据写入速率为每秒 1MB。
  • 您的流的数据容量是您为数据流指定的分片数量的函数。 Kinesis 流的总容量是所有分片的容量之和。

Kinesis Stream 的架构

Kinesis

假设我们有 EC2、手机、笔记本电脑、物联网正在产生数据。它们被称为生产者,因为它们产生数据。数据被移动到 Kinesis 流中并存储在分片中。默认情况下,数据在分片中存储 24 小时。您可以将保留时间增加到 7 天。将数据存储在分片中后,您将拥有被称为消费者的 EC2 实例。他们从分片中获取数据并将其转换为有用的数据。一旦消费者执行了计算,然后将有用的数据移动到 AWS 服务,即 DynamoDB、S3、EMR、Redshift。

Kinesis Firehouse

  • Kinesis Firehose 是一项用于将流数据传输到 Amazon S3、Amazon Redshift、Amazon Elasticsearch 等目的地的服务。
  • 使用 Kinesis Firehouse,您无需管理资源。

Kinesis Firehose 的架构

Kinesis

假设您有 EC2、手机、笔记本电脑、物联网正在产生数据。它们也被称为生产者。生产者将数据发送到 Kinesis Firehose。 Kinesis Firehose 不需要管理资源,例如分片,您无需担心流,您无需担心手动编辑分片以跟上数据等。它是完全自动化的。您甚至无需担心消费者。可以使用 Lambda 函数分析数据。一旦数据被分析,数据就会直接发送到 S3。数据分析是可选的。关于 Kinesis Firehouse 的一件事是,它没有自动保留窗口,但是 Kinesis 流有一个自动保留窗口,默认时间为 24 小时,可以延长到 7 天。 Kinesis Firehose 并非如此。它本质上要么分析数据,要么直接将数据发送到 S3 或其他位置。

另一个位置可以是 Redshift。首先,您必须写入 S3,然后将其复制到 Redshift。

Kinesis

如果位置是弹性搜索集群,则数据将直接发送到弹性搜索集群。

Kinesis

Kinesis Analytics

Kinesis Analytics 是 Kinesis 的一项服务,其中使用标准 SQL 处理和分析流数据。

Kinesis Analytics 的架构

Kinesis

我们有 kinesis firehose 和 kinesis stream。 Kinesis Analytics 允许您对存在于 kinesis firehose 中的数据运行 SQL 查询。您可以使用 SQL 查询将数据存储在 S3、Redshift 或 Elasticsearch 集群中。本质上,使用 SQL 类型查询语言在 kinesis 内部分析数据。

Kinesis Streams 和 Kinesis Firehose 之间的区别

  • Kinesis 流是手动管理的,而 Kinesis Firehose 是完全自动管理的。
  • Kinesis 流将数据发送到许多服务,而 Kinesis Firehose 仅将数据发送到 S3 或 Redshift。
  • Kinesis 流由一个自动保留窗口组成,默认时间为 24 小时,可以扩展到 7 天,而 Kinesis Firehose 没有自动保留窗口。
  • Kinesis 流将数据发送给消费者进行分析和处理,而 Kinesis Firehose 不必担心消费者,因为 Kinesis Firehose 本身使用 lambda 函数分析数据。