Vir*_*raj 5 algorithm postgresql consistent-hashing
我正在使用PostgreSQL 9.3,并且已经使用plproxy实现了与虚拟节点的一致性哈希。
在当前设置中,节点之间的添加和重新平衡正在起作用(服务器之间的数据移动使用PostgrelSQL外部数据包装器完成)。
但是有一个限制。在当前设置中,所有物理节点均假定为相等。即,添加节点时,无法提供每个服务器的虚拟节点数。我也想建立这种行为。
所以我在问什么是更好的算法来实现这一点。当前的算法只是在服务器之间平均分配服务器的虚拟节点容量。在新算法中,我希望看到虚拟节点移动的最小数量。
例如:
假设我们有4个服务器的集群,每个服务器有64个虚拟节点(总共256个虚拟节点)。我想添加具有200个虚拟节点(或虚拟节点的某个百分比)的服务器(服务器X),以便每个4台服务器均对该新服务器做出同等贡献,以在一定程度上满足其虚拟节点数。
但是,当添加新节点(即服务器X)时,我不想为该服务器分配全部200个。我需要一种算法来从现有服务器中分配一定比例,以便在一定程度上满足新服务器的200个节点的需求,并且以前的4个服务器不会在那里大量释放虚拟节点。
在物理服务器之间划分虚拟节点的更好策略是什么?