gpt4 book ai didi

c - 可靠的网络全对全通信 : Message Bus or Publish/Subscribe or Multicast/PGM?

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:52 24 4
gpt4 key购买 nike

我有一个粒子模拟程序,想将它拆分到 LAN 中的多台机器上。每个服务器节点计算多个粒子的位置,并需要将更新后的位置(即相同的数据)发送给所有其他服务器节点。因此每个服务器节点都需要连接到所有其他节点。

这种可靠的全对全通信应该在没有中央服务器/消息代理的情况下工作,并且应该几乎没有延迟。如果可能(与多播一样),还应避免通过网络多次发送相同的数据。

我环顾四周,ZeroMQ (支持总线、发布/订阅和 PGM)以及 Nanomsg (支持 Bus 和 Pub/Sub,但不支持 PGM)看起来很适合解决这个问题。

哪种网络技术最适合这种情况,消息总线、发布/订阅还是多播/PGM?

最佳答案

Pub/Sub 是作为多播实现的,使用 PGM 作为传输方法对 ZeroMQ 客户端是透明的。 ZeroMQ 努力向客户端隐藏实现细节,这也是它运行良好的原因之一。但是不要被简单所迷惑,ZeroMQ 是一个专业设计的消息传递解决方案,非常强大和灵活。它快速、高效,可以轻松处理大量消息。

ZeroMQ 在一些令人印象深刻的大型部署中使用,在我的工作场所,我们使用 ZeroMQ 每秒处理超过 20 万条消息。我们发现 ZeroMQ 可以毫不费力地扩展,该库经过精心设计和优化(没有内存泄漏,性能良好),并且已证明无论我们投入什么,它都能很好地工作。

在 ZeroMQ 中,发布/订阅是在用户定义的主题上完成的,这些主题决定了将哪些数据发送到哪些连接的客户端。因此,如果我有 10 个客户端连接到我的发布套接字,9 个订阅了一个名为“A”的主题,1 个客户端订阅了一个主题“B”,并且我发送了一条主题为“B”的消息,那么只有订阅主题“B”的客户端将发送消息。 ZeroMQ 在传输点(避免浪费带宽)和接收点(避免取消订阅主题时可能出现的竞争条件)执行发布/订阅消息的过滤。也可以订阅多个主题。

要实现您描述的网状消息传递系统,我建议在集群中的每个节点上创建两个套接字,一个用于从所有其他节点接收消息,一个用于向所有其他节点发送消息。如果您不需要主题,那么订阅“*”主题将允许该客户端接收所有消息。

关于c - 可靠的网络全对全通信 : Message Bus or Publish/Subscribe or Multicast/PGM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22728819/

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