假设我有n台电脑。它们每个都有一组整数。每台计算机不会有相同的设置。
即计算机1有{1,2,3,4},计算机2有{4,5,10,20,21},计算机3有{-10,3,5}等等。
我想复制这些数据,以便所有计算机都具有所有整数,即所有计算机都具有 {-10,1,2,3,4,5,10,20,21}
我想最大限度地减少每台计算机发送的消息数量并尽量减少时间。 (即避免采用串行方法,即计算机 1 首先与每个人通信并获取其丢失的数据,然后计算机 2 执行相同操作,依此类推。
执行此操作的有效方法是什么?
谢谢。
最佳答案
Minimal approach would be : All computers send info to just one ( master ) computer and get the result
为了可靠性,您可以考虑至少两台计算机作为主计算机
Assumptions :
- 总共 n 台计算机
- 其中一台计算机被视为主计算机
Algorithm :
- 所有计算机向 Master 发送
input-info
(总共 n-1 条消息) - Master 处理信息
- Master 将
result-info
发送到所有计算机(总共 n-1 条消息)
Reliability :
只有当所有主机都失败时,基于此算法的系统才会完全失败。
Efficiency :
With 1 master , total messages : 2 * (n-1)
With 2 masters , total messages : 2 * 2 * (n-1)
With 3 masters , total messages : 3 * 2 * (n-1)
关于在计算机之间复制数据的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19600363/