在工作进程之间一致地分区数据

时间:2016-09-17 00:51:32

标签: algorithm performance hash consistency consistent-hashing

我正在寻找关于如何在预定义的工作流程中平均分配工作的想法

我有一系列存储在Mongo和'm'工作进程中的'n'文档

目前我编写了一个算法,由每个工作人员在启动时处理

算法:
 1.工人从其预定义的工人编号开始  2.从Mongo获取文件清单  3.文档列表中的每个文档
    {
    幻数= Mod(哈希(文件名),m)
    如果(幻数==我的工号)
    将文档添加到我的存储桶列表以获取特定操作
}

这个算法做得相当不错,但效率并不高,因为每个工作人员选择的文件数量相差很大,比平均值高出约30%

所以我正在寻找一些关于如何使工人能够平均分配'n'可用文件或在平均值范围内(~5%)分发

的想法

当前的基础设施不允许我拥有可以查询Mongo并将工作分发给工作人员的主人

我做了一些关于一致散列的在线阅读(由亚马逊Dynamo和Memcached使用)并且它看起来很有前途,但没有尝试实现和分析它,但想检查是否有任何其他解决方案或想法可能是有希望的或者是一致的散列是要走的路?

0 个答案:

没有答案