Amazon web services kinesis数据流消费者的高可用性

Amazon web services kinesis数据流消费者的高可用性,amazon-web-services,failover,availability,amazon-kinesis,Amazon Web Services,Failover,Availability,Amazon Kinesis,我想做下面的数据发送架构 生产者-->运动数据流-->消费者 消费者服务器可以关闭,因此我认为应该至少有2个消费者。 是这样吗 当一个数据流有两个消费者时,有没有办法处理每个消费者一半的数据?正如我所知,没有办法。 如果每个消费者都使用相同的数据,这将浪费时间和成本。 因为我只为高可用性提供了两个消费者。(用于故障切换) 在web架构中, ELB或L4可以通过负载平衡将一半数据发送到每个was服务器 我想知道运动数据流的类似方式 当一个数据流有两个使用者时,有没有办法 每个消费者处理一半的数据?

我想做下面的数据发送架构

生产者-->运动数据流-->消费者

消费者服务器可以关闭,因此我认为应该至少有2个消费者。 是这样吗

当一个数据流有两个消费者时,有没有办法处理每个消费者一半的数据?正如我所知,没有办法。 如果每个消费者都使用相同的数据,这将浪费时间和成本。 因为我只为高可用性提供了两个消费者。(用于故障切换)

在web架构中, ELB或L4可以通过负载平衡将一半数据发送到每个was服务器

我想知道运动数据流的类似方式

当一个数据流有两个使用者时,有没有办法 每个消费者处理一半的数据?正如我所知,没有办法

你错了

你应该通过或更具体地说

动觉流由1个或多个碎片组成。每个碎片都可以 独立处理

引用上述链接中的示例

以下示例说明了KCL如何帮助您处理缩放 和重新硬化:

例如,如果应用程序在一个EC2实例上运行,并且 正在处理一个包含四个碎片的运动数据流。这个 实例有一个KCL工作者和四个记录处理器(一个记录 每个碎片的处理器)。这四个记录处理器运行在 在同一进程内并行

接下来,如果您扩展应用程序以使用另一个实例,则 两个实例处理一个具有四个碎片的流。当KCL worker在第二个实例上启动,它与 第一个实例,因此每个实例现在处理两个碎片

如果你决定把四个碎片分成五个碎片。KCL 再次跨实例协调处理:一个实例 处理三个碎片,另一个处理两个碎片。相似的 合并碎片时会发生协调

您只需确保两个Kinesis消费者应用程序(在不同的机器上运行)都配置了相同的应用程序名称。KCL将应用程序名称、碎片检查点作为Dynamo DB表进行跟踪。此dynamo db表还用于定义使用者应用程序之间的碎片所有权

因此,如果您有一个包含4个碎片和两个在不同机器上运行的消费者应用程序的Kinesis流。然后碎片平衡将按以下方式进行

----Shard1---> application-instance-1
----Shard2---> application-instance-1
----Shard3---> application-instance-2
----Shard4---> application-instance-2
假设
application-instance-1
关闭。然后,
application-instance-2
将开始处理所有碎片

----Shard1---> application-instance-2
----Shard2---> application-instance-2
----Shard3---> application-instance-2
----Shard4---> application-instance-2

谢谢我可以认为,KCL与同一集团的实例进行沟通。因此,它可以管理每个实例的碎片。