我正在寻找关于如何在预定义的工作进程之间平均分配工作的想法
我有一个存储在 Mongo 中的“n”个文档数组和“m”个工作进程
目前我已经编写了一个算法,由每个工人在启动时处理
算法:
1. Worker 从其预定义的 worker Number 开始
2. 从 Mongo 获取文档列表
3. ForEach Document in Document List
{
Magic Number = Mod( Hash( Document Name ), m )
If( Magic Number == My Worker Number )
Add记录到我的遗愿清单以执行特定操作
}
这个算法做得相当不错,但它的效率不是很高
因此,我正在寻找一些关于如何使工作人员平均分配“n”个可用文档或在平均值的某个容差范围内(~5%)的想法
当前的基础设施不允许我拥有可以查询 Mongo 并将工作分配给工作人员的 Master
我做了一些关于一致性哈希的在线阅读(亚马逊 Dynamo 和 Memcached 使用),它看起来很有希望,但没有尝试实施和分析它,但想检查是否有任何其他解决方案或想法可以有希望或一致散列是要走的路吗?