仅使用C的分布式系统设计

我有实现分布式节点系统(如p2p节点)的工作,这些节点中的每一个(比如A,B,C和D)执行某些function,并且需要相互交互以进行各种操作,例如同步操作和其他类似于15个节点的节点与一组5个B节点交互以进入最小负载节点的队列并获得令牌号,然后等待C将它们重定向到空闲节点D,依此类推。

关于设计,我有点迷失:

  1. 我想到的协议是封装操作类型的结构和其他要发送的东西。 此外,这是使用确认方案完成的,所以我可以确定对方得到了消息。

  2. 我如何进行分布式互斥方面,因为我没有中央服务器。 我猜每个节点复制数据,但这听起来有点太贵(更不用说愚蠢)。

  3. 实现p2p系统时遵循的基本设计方法是什么,即如何实现程序,使其在接收时被阻止,但也可以发送进一步的更新等,同时从其他人​​那里获取有关“状态”的信息。整个系统。

  4. 我如何确保请求的总排序?

此外,我可能需要查看/面对的其他问题是什么。 如果您能指出我在实施p2p和分布式系统方面的一些良好的在线资源,我也将不胜感激。

谢谢!!

我不会尝试给出一个“完整”的答案(因为这个问题太大而且含糊不清)但我可以指出你想要解决一个有趣的问题:

  1. 您可以使用消息队列系统(例如AMQP RabbitMQ :有可用的实验性C绑定)在您的节点之间实现可靠的消息传递。

  2. 相互排斥:您可以使用Paxos等协议

防止阻塞的秘诀是您的端点必须全部写为具有“协议”处理线程的服务器,这些线程与数据处理的线程分开。

至于线路协议,我已经迷恋于线路协议的JSON。 它是人类可读的。 无需长度字节就可以流式传输! 它易于扩展,并且大多数不受协议版本更改的影响。

另一款值得一看的软件可能是KadC!

http://kadc.sourceforge.net