关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
6年前关闭。
Improve this question
我需要想出一个解决复杂文件传输的方法。我可以做到这一点,但我想知道是否有人知道已经完成了我想做的 90% 的开源解决方案。
要求很奇怪。不要试图理解它们,它们是政治、领土和官僚主义的 hell 般的混合物。
我控制两台服务器,每台服务器都从一组上游源中获取文件。我对来源有一些影响(但不是完全控制)。我的两台服务器收集这些文件并将新文件链接到处理目录(这有点简化)。
我的两台服务器,我们称它们为 A 和 B,现在必须将这些文件发送到下游的一对服务器。我几乎无法控制下游服务器,我们称它们为 X 和 Y。
现在变得奇怪了:
让我明白所有这一切的一点是,为了安全起见,我的本地部门希望文件在 A 和 B 之间复制,但下游接收器(不同的部门)坚持他们想要 X 和 Y 进行故障转移......但是每个文件只能复制到 A 或 B,不能同时复制(或仅在极少数情况下)。如果下游人员只管理重复文件,那将很容易(呃)。鉴于文件名可以快速识别重复,这真的不难。哦,好吧,他们不想那样做。即使 X 或 Y 失败可能会丢失一些文件。去搞清楚。
所以我正在研究一种算法来完成所有这些工作,并且我已经取得了一些进展,但是处理竞争条件、节点故障、节点重启、大多数独立的性质会有点复杂。 A 和 B 等等。如果经过一个月的努力,一位 friend 说“你为什么不直接使用 SuperOpenSourceSolution?你可以在一天之内让它工作!”我会有点不高兴。
那么......有人知道开箱即用(或几乎如此)的解决方案吗?我知道那里有通用的 MFT 解决方案,但我还没有听说他们可以做这种事情。
我看过 rsync 但我看不出它如何处理奇怪的分布。
谢谢。
最佳答案
看起来条件 (5) 很棘手,如果 A 和 B 可以查询您未指定的 X 和 Y 的状态,则会有所缓解。
这让我想起了NNTP Ihave/Sendme可能有用的协议(protocol)。
如果你不能自由地对机器 X 和 Y 提出“你有 P”的请求,我有一种感觉,这个任务可能像经典的 Two Army Problem 一样被证明是不可能的。 .如果是这样,那么你必须做设计师面临不可能的限制所做的事情,要么提供一个令人满意的解决方案(例如 TCP 4,3-way handshake ),它在足够的时间内工作,或者如果“足够好”还不够好,那么你必须向管理层表明他们确实要求不可能的事情。
我知道您说过不要问,但是为什么要像约束(5)那样禁止幂等转移?
关于algorithm - 具有奇怪要求的文件传输 : fault tolerant but non-duplicating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3261746/