Algorithm 算法问题:最小碎片移动

Algorithm 算法问题:最小碎片移动,algorithm,sharding,Algorithm,Sharding,我在分布式系统中遇到了碎片移动问题 【问题】 最初,每个分区负责任意数量的碎片。(数字可以是任意的,因为系统支持将碎片从一个分区移动到另一个分区) 然后一个新的分区出现,系统需要重新硬盘。目标是使碎片分配尽可能一致,即任何两个分区之间的最大碎片数差最多为1,并使移动碎片数最小化 例如,假设最初有三个分区,P1、P2和P3。P1处理了5个碎片,P2处理了3个碎片,P3处理了1个碎片。然后,一个新的分区P4进入,以便系统重新硬装。重新硬存储的结果是一个分区处理3个碎片,三个分区分别处理2个碎片。现在

我在分布式系统中遇到了碎片移动问题

【问题】
最初,每个分区负责任意数量的碎片。(数字可以是任意的,因为系统支持将碎片从一个分区移动到另一个分区)

然后一个新的分区出现,系统需要重新硬盘。目标是使碎片分配尽可能一致,即任何两个分区之间的最大碎片数差最多为1,并使移动碎片数最小化

例如,假设最初有三个分区,P1、P2和P3。P1处理了5个碎片,P2处理了3个碎片,P3处理了1个碎片。然后,一个新的分区P4进入,以便系统重新硬装。重新硬存储的结果是一个分区处理3个碎片,三个分区分别处理2个碎片。现在的问题是哪个分区应该处理3个碎片。对于这种特殊情况,P1应该处理3个碎片,因为否则碎片的移动不是最小的

【我的粗略解决方案】
现在我有一个粗略的想法,如果分区
Pi
具有第I个最多的碎片,那么
Pi
的新碎片数也应该是新碎片数中第I个最大的数。例如,如果分区P1、P2、P3中的原始碎片编号分别为10、2、1,那么分区P1现在应该处理4个碎片,分区P2、P3、P4(新分区)分别处理3个碎片

【我的问题】

我尝试了一些例子,这个算法很有效。但我不确定这是否正确。对吗?如何证明呢?谢谢

从你的问题中我可以理解,你需要的是。你可以找到多篇关于它的文章。无论何时添加新的碎片,它都会从其他节点获取相当多的对象。

从您的问题中我可以理解,您需要的是。你可以找到多篇关于它的文章。无论何时添加新的切分,它都会从其他节点获得公平的对象份额。

不知道您使用了哪种算法,但这是分区问题的一个典型应用,具有高效的动态规划solution@mangusta谢谢你的回复!你能给我指出一个解决方案或分享问题的名称吗?我认为这应该是一个典型的问题,但不知道它的名称,因此无法搜索解决方案。不知道您使用了哪种算法,但这是一个典型的应用分区问题,它具有高效的动态规划solution@mangusta谢谢你的回复!你能给我指出一个解决方案或分享问题的名称吗?我认为这应该是一个典型的问题,但不知道它的名称,因此无法搜索解决方案。他的问题不是将密钥从旧碎片重新分配到新碎片,他想自己重新分配碎片。他的问题不是将密钥从旧碎片重新分配到新碎片,他想重新分配碎片