当前位置: 首页 > 知识库问答 >
问题:

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

戴浩初
2023-03-14

我想制作下面的数据发送架构。

生产商--

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

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

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

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

共有1个答案

顾正初
2023-03-14

当一个数据流有两个使用者时,是否有任何方法可以处理每个使用者一半的数据?正如我所知,这是不可能的。

你错了。

您应该阅读《Kinesis开发人员指南》或更具体的内容https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-scaling.html.

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

引用上述链接中的示例,

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

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

接下来,如果您缩放应用程序以使用另一个实例,那么将有两个实例处理一个具有四个碎片的流。当KCL worker在第二个实例上启动时,它会与第一个实例进行负载平衡,因此每个实例现在处理两个碎片。

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

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

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

----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
 类似资料:
  • 我有一个Kinesis生产者,它将单一类型的消息写入流。我想在多个完全不同的消费者应用程序中处理这个流。因此,给定主题/流的具有单个发布者的发布/订阅。我还想利用检查点来确保每个消费者处理写入流的每条消息。 最初,我对所有消费者和生产者使用相同的应用程序名称。但是,一旦我启动多个消费者,我就开始收到以下错误: 通用域名格式。amazonaws。服务。运动。模型InvalidArgumentExce

  • Kinesis流用于从调用应用程序馈送消息,我们从Kinesis流中获取消息并进行处理。KPL(本地)用于将数据生成(馈送)到Kinesis中,KCL(@AWS EC2)用于消费者端KPL正在以良好的速度生成消息,但由于流转时长问题1,消费者需要更多时间

  • 我是pyflink的新手。我正在尝试编写一个python程序来从kafka主题读取数据并将数据打印到标准输出。我按照链接Flink Python Datastream API Kafka Producer Sink Serializaion进行了操作。但由于版本不匹配,我一直看到NoSuchMethod odError。我添加了https://repo.maven.apache.org/maven

  • 本文向大家介绍Kafka 的消费者如何消费数据相关面试题,主要包含被问及Kafka 的消费者如何消费数据时的应答技巧和注意事项,需要的朋友参考一下 消费者每次消费数据的时候,消费者都会记录消费的物理偏移量(offset)的位置 等到下次消费时,他会接着上次位置继续消费

  • Spring的云流是否也支持Kafka式的动觉再平衡?最近有人promise要解决这个问题https://github.com/spring-projects/spring-integration-aws/issues/99 谢谢

  • 我正在尝试使用高级消费者批量读取Kafka主题中的消息。在这批读取期间,我的线程必须在某个时候停止。 或者,一旦主题中的所有消息都用完了。或获取消息即将被读取时的最大偏移量,并停止直到达到最大偏移量。 我尝试在高级消费者处使用代码,但 KafkaStream 上的迭代器方法似乎是一个阻塞调用,并等待另一条消息传入。 所以3个问题, > 我怎么知道没有更多消息要从该主题中读取? 如果我对上述问题有答