Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 异步分布式文件传输_C++_Algorithm - Fatal编程技术网

C++ 异步分布式文件传输

C++ 异步分布式文件传输,c++,algorithm,C++,Algorithm,我需要建立一个系统,让一组机器生成独特的文件,让我们称之为生产者,让一组机器接收这些文件,我们称之为消费者。生产者的任何机器都可以[基于某种散列机制]向一个或多个消费者发送文件。我需要建立一种机制,以确保文件交付以有保证的方式进行。i、 e.生产者或消费者可能会崩溃/重新启动,并能够从中断处继续。在任何容错系统中,这似乎是一个非常普遍的需求,有没有什么傻瓜式的可扩展方式来实现这一点?生产者和消费者的数量预计会不断增加/减少。您所描述的可能最容易通过某种形式的消息传递实现。你可能想看看;我自己也曾

我需要建立一个系统,让一组机器生成独特的文件,让我们称之为生产者,让一组机器接收这些文件,我们称之为消费者。生产者的任何机器都可以[基于某种散列机制]向一个或多个消费者发送文件。我需要建立一种机制,以确保文件交付以有保证的方式进行。i、 e.生产者或消费者可能会崩溃/重新启动,并能够从中断处继续。在任何容错系统中,这似乎是一个非常普遍的需求,有没有什么傻瓜式的可扩展方式来实现这一点?生产者和消费者的数量预计会不断增加/减少。

您所描述的可能最容易通过某种形式的消息传递实现。你可能想看看;我自己也曾与这个图书馆合作过,可以衷心推荐它


请注意:如果你不需要使用C++,在你的案例中挑选一些可能会很有趣。

你所描述的听起来有点像架构的复制机制。您将对本文的第3.1节和第3.2节以及图2中的插图最感兴趣

适用于您的案例的摘要(简化):

  • 生产者发送数据,等待回复
  • 消费者回答:“我已收到所有数据。”
  • 生产者发送“完成写入”命令,等待回复
  • 消费者回答:“我已将数据刷新到磁盘。”
  • 现在(仅现在)考虑数据“保存” 本文中描述的GFS实现了许多优化,包括将写操作流水线化,而不是将一台机器的带宽同时拆分到n台机器上

    为了通过崩溃进一步保证安全,可以使用。这可能仅在生产者端(例如,您在超时后重试),也可能在使用者端(重新启动时,继续操作)