Kinesis vs KPL vs KCL

Kinesis vs KPL vs KCL

这是一个比较浅的问题。然而,我对这三项服务感到困惑。

我了解 KPL 产生快速数据,而 KCL 使用 Kinesis 产生的快速数据。但是,我不明白的是,如果 KPL 和 KCL 组成这一对,我们需要 AWS Kinesis 做什么?

换个角度看:如果 AWS Kinesis 可以产生快速数据,而 KCL 可以使用它,那么我们需要 KPL 有什么用?

非常感谢任何澄清的答案。

A​​WS Kinesis 是一个非常广泛 的平台。粗略地说,您可以将 AWS Kinesis 视为: Kinesis 数据流 + Kinesis 视频流 + Kinesis Firehose + Kinesis Analytics。 (每个都有自己的目的)。

More detail here: https://aws.amazon.com/kinesis/

现在,让我们以 Kinesis Data Streams 为例: 如果您是一名开发人员并且需要以编程方式(即 SDK)向 特定 Kinesis Data Stream 提供数据怎么办? 这就是 KPL 发挥作用的地方。您使用 KPL 向该流提供数据。

与 KCL 类似的故事:

如果您是开发人员并且想要从数据流中获取数据(“使用”),则可以使用 KCL。

简而言之: AWS Kinesis 是一个巨大的平台,其中 KCLKPL 用于特定目的。

Kinesis Producer Library (KPL) 将小 user-formatted 记录聚合成最大 1 MB 的较大记录,以更好地利用 Amazon Kinesis Data Streams 吞吐量。

虽然 Java 的 KCL 支持分解这些记录。

更多信息请参考:https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html

一个问题,KCL 和 KPL 非常关注 Java,但大多数数据科学家都喜欢 Python。 始终可以在 Java MultiLangDaemon 之上创建 amazon-kinesis-client-python 库以进行进程间通信,但不推荐这样做。