2009-11-10 49 views
0

我目前使用模块对UUID空间进行分区,因此数据查找不需要对每台服务器执行ping操作。但是,模数的主要问题在于扩展,因为向数据存储添加更多节点可能需要一些数据迁移。您认为,在保持服务可用的同时向系统添加更多节点的最佳方法是什么?如何在分布式环境中有效查找有关UUID的信息?

在此先感谢!

克里斯

回答

0

我可以看到增加更多的节点两种情况:

  1. 您当前的节点集合是不够的性能要求。
  2. 你添加新的数据,因此随着时间的推移,你需要添加新节点

在第二种情况下,如果的UUID有一些基于时间的组件,然后按年龄划分可能不够好

但我猜想这是第一个更有趣的案例。随着数据信息的使用,您会发现分区需要更改才能充分分配工作。在这种情况下,我没有看到将某些分区移动到新节点的其他选择,通过定义当前的节点过载。我不清楚问题的严重程度 - 难道是真正的迁移吗?还是客户突然需要去一个新的地方获取他们的数据?

你能实现某种懒惰的查找方法吗?

Client initialises with current table of servers, 
    (hence knows the modulus to apply to uuid and can route on that basis) 

Servers decide to reorganise themselves 

Client gets a request, calclulates a now invalid modulus 

Attempts to access the data 

response says "Gone Away" **AND** gives the new server info 

Client can now recompute the location