用户设备和服务器应用程序之间的消息流应如下所示
用户应将消息发送到远程服务器,该服务器将被使用 一个或多个服务器应用程序。
应用程序应向所有连接的人广播/发布消息 用户。
应用程序应向特定用户设备发送消息 (单播)。
此外,一个或多个用户将被任意连接或断开连接到服务器,并且将任意产生或终止一个或多个应用程序。
对于上述问题陈述,我设计了以下zmq架构。
网关/代理处理用户和应用程序的任意分配,并提供所需的隔离。它将用户消息发布到所有应用程序。它还会汇总通过 SUB
套接字从应用程序发送给用户的所有消息。
应用程序发送两部分消息,第一部分是用户身份,第二部分是实际消息。网关/代理基于身份将该消息发送给用户。将创建广播的特殊身份,网关(如果已收到广播标识)将通过 PUB
套接字将消息发布给所有用户。
用户连接到网关中的 ROUTER
和 PUB
套接字。将从两个套接字接收公平排队的数据。发送时,邮件将仅发送到网关的 ROUTER
套接字,而不是 PUB
套接字。
Q1
:上述架构有任何缺陷吗?
Q2
:是否有可能进一步改善它?
假设Q2
:
333 [ms]
(用户,通过互联网连接到服务器,广域网连接btw用户和服务器提供延迟多小于333 [ms]
)答案 0 :(得分:2)
你可以试试Malamute,它可以满足您的需求,更像是信用流,保持活力,跟踪。
Malamute是基于zeromq和zeromq社区的一部分的小型经纪人。您可以将Malamute作为应用程序内的组件运行,并且不需要专门的服务或守护程序。
如果您正在使用C或C ++,因为它自然地集成了。它还具有更多语言的绑定。