在计算机之间复制数据的算法

标签 algorithm replication

假设我有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 :

  1. 总共 n 台计算机
  2. 其中一台计算机被视为主计算机

Algorithm :

  1. 所有计算机向 Master 发送 input-info(总共 n-1 条消息)
  2. Master 处理信息
  3. 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/

相关文章:

java - 仅使用 1、2、3 步到达第 n 步

java - 比 O(n) 更好的范围相交算法?

MySQL 复制 Tungsten 与 Galera

mysql数据库复制错误日志。取回方法

Redis:如何从奴隶更新主人?

algorithm - 最少翻牌

c++ - 网格中的高效方法

android - 与 Android 之间的 CouchDB 复制

mysql - InnoDB隐藏自增和双主

c# - 用颜色填充点之间空间的算法