gpt4 book ai didi

将值均匀分配给所有进程的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:31:29 32 4
gpt4 key购买 nike

我必须编写一个分布式系统,其中有四个进程在四个不同的节点上运行。分布式系统应该按以下方式工作:随机数生成器在每个进程中生成一个随机数。目标是通过进程之间的消息传递来平衡所有进程中的这些值。这样,进程 A 就是服务器,它从所有进程中获取数字,然后命令它们将其数字的一部分发送给一个或多个其他进程,以平衡进程持有的所有数字。例如 A 的计数是 30,B 的计数是 65,C 的计数是 35,D 的计数是 70。A 计算 30+65+35+70 = 200 除以 4 = 50。现在进程 A,服务器,知道谁拥有更少高于平均水平,谁拥有超过平均水平。现在的问题是 A 如何决定谁将什么号码发送给谁?使所有进程的值均等化。请注意,A 不能直接指示进程减少或增加其计数,例如它不能向 B 发送消息并告诉它减 15,然后再向 C 发送另一条消息并告诉它增加 15。A 必须向 B 发送一条消息,告诉 B 减 15,然后发送一个向 C 发送消息并告诉它增加 15,或者换句话说,它告诉 B 将您的计数中的 15 发送给 C。在此先感谢。扎基。

最佳答案

据我所知,没有特定的配方,也没有很好地定义模式来实现这种分布式系统(如果有 Material 提供论证指南,请参阅问题末尾的链接)。这里涉及将塑造最终系统的各种选择、其可扩展性、如何响应、如何可靠等。

您将问题标记为与语言无关。我相信好的概念比技术更重要,但最终必须做出选择,而且像这样的系统太复杂了,无法使用您不熟悉的语言构建。

我会用 C# 构建它,因为它是我的主要开发语言,继续使用面向 agile development 的技术.

  1. 首先,我将尝试勾勒出一个宏观架构设计,强调相关参与者及其职责(但不会涉及太多细节)。
  2. 然后我将尝试编写第一个涉及两个节点的简单原型(prototype)
  3. 当原型(prototype)工作时,我会尝试找到弱点并让它与四个节点一起工作。
  4. 如果有问题,迭代最后一点,直到它满足要求

更详细地说,您甚至可以使用原始套接字来构建它;但为简单起见,我建议您在 HTTP protocol 上找到您的系统(例如,使用 .NET BCL HttpListenerHttpClient 组件作为基础)进行通信:

  1. 一组预定义的GET消息可以执行对等服务器之间的同步。
  2. POST 消息可用于交换随机数的数据。

关于数字的产生,开启了一个全新的世界。我会依赖像 ANU Quantum Random Server 这样的外部服务(如果您可以计算一个事件的 Internet 连接)。我知道你说你有一个算法要实现,我提供了这个作为替代方案(我不知道这部分是否可以改变)。

至少,我建议您阅读 this article还有this关于点对点,如果您将使用 .NET 框架。

关于将值均匀分配给所有进程的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914637/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com