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

Kafka如何在分区增加时保持事件的顺序

令狐烨烨
2023-03-14

我想通过moding user_id来创建用户事件的N个分区N以便用户可以按照发送事件的顺序处理事件。

如果我曾经决定N不足以处理负载,并且希望分别增加分区和使用者的数量,那么在使用用户事件时,我必须做什么来保留事件顺序呢?

共有1个答案

能旭
2023-03-14

那么,您可以创建一个分区数增加的新主题,然后将所有事件复制到新主题中。这样,您就可以维护排序(对于给定的user_id,在原始方案中不会保证跨不同的user_id排序)。

当然,这可能需要停机。仅仅增加分区计数的简单解决方案显然是行不通的,因为它会改变散列计算,并导致给定user_id的事件被分割到多个分区(从而失去排序)。增加分区计数的困难是您在最初创建主题时要仔细考虑分区计数的原因之一。

 类似资料:
  • 我有一个使用Kafka 1.0作为队列的应用程序。Kafka主题有80个分区和80个正在运行的使用者。(Kafkapython消费者)。 通过运行命令: 我看到其中一个分区被卡在一个偏移位置,并且随着新记录的添加,延迟会不断增加。 上面命令的输出如下所示: 这是什么原因?此外,不需要使用重置偏移量命令重置偏移量,因为可能不会定期手动监视此服务器。 客户端作为Linux m/c中的并行进程在后台运行

  • 阅读这篇关于主题分区中消息排序的文章:https://blog.softwaremill.com/does-kafka-really-guarantee-the-order-of-messages-3ca849fd19d2 允许在不设置最大值的情况下重试。航班请求。每连接到1可能会更改记录的顺序,因为如果将两个批发送到单个分区,第一个失败并重试,但第二个成功,则第二个批中的记录可能会首先出现。 根

  • 我知道,如果我们在消费者组中有多个分区和几乎相同数量的消费者,那么处理速度会加快。如果我们想保持事件的顺序并在收到每个事件时处理它,我们如何使用多个分区和消费者来实现这一点。 在我的用例中,按顺序处理事件非常关键,否则系统会崩溃。我想使用多个分区来增加并行性,但不知何故“让它们按顺序”。

  • 我不熟悉Kinesis,当我阅读Kinesis文档时,我意识到使用相同分区键的消息将映射到相同的切分以保证顺序。这完全有道理。然而,我想知道,如果我们在运行时增加主题碎片的数量,具有相同分区键的新消息是否会像以前一样散列到相同的碎片(旧的)中? 如果是这样,如果所有消息都提供了分区键,那么它们都不会映射到新的分片怎么办?这对我来说没有意义。 如果没有,那么Kinesis如何保证具有相同分区键的消息

  • 我正在评估用作事件总线的不同流媒体/消息服务。我正在考虑的一个方面是每项服务提供的订购保证。我正在探索的两个选项是AWS Kinesis和Kafka,从较高的层次来看,它们似乎都提供了类似的订购保证,其中记录保证以仅在该碎片/分区中发布的相同顺序使用。 AWS Kinesis API似乎公开了父分片的id,因此使用KCL的消费者组可以确保具有相同分区键的记录可以按照发布顺序(假设是单线程发布者)被

  • 问题内容: 我想将一个键,值对添加到哈希表(或任何其他集合)中,但必须保持插入顺序。我怎样才能做到这一点? 就像我将1作为键“ 1”添加为值,将2作为键并将“ 2”添加为值。 输出应为: 问题答案: 以下是一些重要实现的特征差异: :“具有可预测的迭代顺序,通常是将键插入映射 的顺序 ( 插入顺序 )。” :“不保证地图的顺序” :“根据其键的自然顺序或按” 即是一个 因此,在这种情况下,您需要的