我正在使用PostgreSQL 9.3,并且我使用plproxy实现了与虚拟节点的Consistent散列。
在当前设置节点中,节点之间的添加和重新平衡正在起作用(服务器之间的数据移动使用PostgrelSQL foreign data wrappers完成)。
但是有一个限制。在当前设置中,假设所有物理节点都相等。即,添加节点时无法为每个服务器提供虚拟节点计数。我也想建立这种行为。
所以我要问什么是更好的算法来实现它。当前算法只是在服务器之间均匀分配服务器的虚拟节点容量。在新算法中,我希望看到虚拟节点移动的最小量。
前:
假设我们有4个服务器的集群,每个服务器有64个虚拟节点(总共256个虚拟节点)。我想添加服务器(服务器X),它具有200个(或一定百分比的虚拟节点)虚拟节点,这样每个4个服务器对这个新服务器的贡献相同,以在一定程度上满足它的虚拟节点数。 / p>
但是当添加新节点(即服务器X)时,我不想为该服务器分配全部200。我需要一种算法来从现有服务器中分配一定百分比,以便新服务器的200个节点需要在某种程度上得到满足,以及之前的4个服务器不会在那里大大减少虚拟节点数量。
在物理服务器之间划分虚拟节点的更好策略是什么?