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

在运行集群中添加分区时维护MSG的顺序

淳于玺
2023-03-14

可能更早的时候,有2个分区和4种类型的Msg,我们得到了理想的密钥哈希algo,所以每个分区都分配了2种类型的msgs(分区密钥)。

添加2个新分区(当集群仍在运行时)将开始向旧分区和新分区添加新的msg(根据新的密钥散列algo),但是在分区#2的偏移量为2000处有一个类型为#4的msg,分区#2的消费者的当前偏移量仅为10,在分区#4中添加了新的类型为#4的msg,它将首先被消费,对吗?

但我想维持秩序,可能吗?

kafka是否为这种排序提供了某种机制,或者如果我想在向正在运行的集群添加新分区时拥有维护排序的功能/支持,我必须在使用者端进行自定义处理?

共有1个答案

曾修真
2023-03-14

您可以使用自定义的分区器来确定目标分区。

https://kafka.apache.org/documentation/#ProducerConfigs_Partitioner.class

最初可以委托给默认分区器,但要为特定键缓存目标分区。

 类似资料:
  • 高级运维 高级集群操作主要包括用 ceph 服务管理脚本启动、停止、重启集群,和集群健康状态检查、监控和操作集群。 操纵集群 监控集群 监控 OSD 和归置组 用户管理 数据归置 你的集群开始运行后,就可以尝试数据归置了。 Ceph 是 PB 级数据存储集群,它用 CRUSH 算法、靠存储池和归置组在集群内分布数据。 数据归置概览 存储池 纠删码 分级缓存 归置组 CRUSH 图 低级运维 低级集

  • 注: 内容翻译自 Maintenance 概述 etcd 集群需要定期维护来保持可靠。基于 etcd 应用的需要,这个维护通常可以自动执行,不需要停机或者显著的降低性能。 所有 etcd 的维护是指管理被 etcd 键空间消耗的存储资源。通过存储空间的配额来控制键空间大小;如果 etcd 成员运行空间不足,将触发集群级警告,这将使得系统进入有限操作的维护模式。为了避免没有空间来写入键空间, etc

  • 目前,我正在测试一个具有CRUD操作的类(例如)。按照后面使用的方法,我想按照创建、读取、更新和删除的顺序测试所有操作。 由于JUnit中测试用例的执行顺序依赖于JVM,所以我需要一些适当的方法来确保单元测试用例按照给定的顺序执行。 到目前为止,我提出了以下策略: > 在JUnit4中使用按名称的升序执行方法。然而,这需要重命名测试用例,而且对我来说似乎不是最好的方法,因为在未来需要添加更多的测试

  • TiDB 是高可用数据库,可以在部分数据库节点下线的情况下正常运行,因此,我们可以安全地对底层 Kubernetes 节点进行停机维护。在具体操作时,针对 PD、TiKV 和 TiDB 实例的不同特性,我们需要采取不同的操作策略。 本文档将详细介绍如何对 Kubernetes 节点进行临时或长期的维护操作。 环境准备: kubectl tkctl jq 注意: 长期维护节点前,需要保证 Kuber

  • 我需要能够从列表中删除项目,并将其插入,同时保持相同的顺序。我的列表从最初的项目集开始。无法插入新项。因此,added-items和max-item-count保持不变。 示例: 如果建议使用原件备份列表,如何确定与当前列表的正确相邻位置?因此,如果原始列表有6项,并且值位于索引。我从列表中删除{2,3,4}项。新列表的大小更改为3。无法将原始列表中索引处的项添加到索引处的新列表中。新列表将只有{

  • 问题内容: 我有下表 然后我尝试根据主键获取记录 然后我得到以下结果 可以看到,结果按ID排序。我试图实现的结果是按照查询中提供的顺序对结果进行排序。给定这个例子,它应该返回 问题答案: 正如另一个答案所提到的:您发布的查询与您想要的结果顺序无关,而只是您想要的结果。 为了订购您的结果,我将使用ORDER BY FIELD(): FIELD的参数列表可以是可变长度。