【问题标题】:Fail-safe importing data: Matching term?故障安全导入数据:匹配项?
【发布时间】:2019-08-22 09:25:31
【问题描述】:

我正在搜索这个问题的匹配项:

System-1 有一个包含文件的目录。

  1. system-1 将数据发送到 system-2
  2. system2 导入数据。
  3. system-2 向 system-1 发送确认
  4. system-1 删除/移动本地数据

每次都可能发生电源故障或错误。

如果确认丢失,system-1 将尝试再次发送数据。

现在数据被导入两次,这是失败的。数据应该只导入一次。

这个问题不是关于问题的解决方案,这个问题是关于如何调用这个问题。

这个匹配词是什么?

示例:System-1 可以是邮件服务器,system-2 可以是导入邮件的问题系统。

【问题讨论】:

  • 两个系统之间的数据管道Solution stack(即使您谈论的是系统而不是应用程序)怎么样?
  • @B--rian 根据您的观点,系统和应用程序有什么区别?
  • @B--rian 解决方案堆栈不适合。我的问题不在于一个构建在另一个之上的层。 System-1 和 system-2 是独立的系统/应用程序。我添加了一个示例。
  • 我想这试图解决问题。但我在此页面上找不到问题的名称:en.wikipedia.org/wiki/Two-phase_commit_protocol
  • 系统在恕我直言,比应用程序更通用。一个系统可以是一组应用程序。

标签: terminology


【解决方案1】:

这可以归因于名为Two Generals' Problem 的场景。

这是一个思想实验,它说明了通过不可靠的媒体连接的两个系统之间的通信中出现的复杂性。

根据维基百科,这是……

旨在说明尝试的陷阱和设计挑战 通过不可靠的链接进行通信来协调行动。在 实验中,两名将军只能与一名将军交流 另一种是派信使穿过敌方领土。本实验 询问他们如何就启动一项 攻击,同时知道他们发送的任何信使都可能被捕获。

然而,这个问题在计算机网络中通过 TCP 机制在每个数据包交换节点之间发送acknowledgements 在更大程度上得到解决。

【讨论】:

  • 阅读此答案时,我立即问自己如何将其推广到两个以上的系统。 Mongo Arbiter 出现在我的脑海中,这个仲裁器对于避免 stalemate 的情况是必要的,因为不同的系统必须快速做出关于状态的决定。
  • 两个将军问题是公认的现象,适用于两个以上系统之间的通信。任何大量通信的构建块是两个节点之间的基本通信,现象适用于那里。所以,它已经是问题的最普遍形式了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 2021-06-14
  • 1970-01-01
相关资源
最近更新 更多