是否有可能改进这种zmq架构?

时间:2016-05-06 09:18:58

标签: networking architecture zeromq distributed

说明:

在以下架构中,有三个关键组件。 enter image description here

  1. 用户 - 运行用户应用程序的计算机。
  2. 应用程序 - 在远程服务器内运行。
  3. 网关/代理 - 用户设备和服务器应用程序之间隔离所必需的。
  4. 用户设备和服务器应用程序之间的消息流应如下所示

    1. 用户应将消息发送到远程服务器,该服务器将被使用 一个或多个服务器应用程序。

    2. 应用程序应向所有连接的人广播/发布消息 用户。

    3. 应用程序应向特定用户设备发送消息 (单播)。

    4. 此外,一个或多个用户将被任意连接或断开连接到服务器,并且将任意产生或终止一个或多个应用程序。

      对于上述问题陈述,我设计了以下zmq架构。

      enter image description here

      网关/代理处理用户和应用程序的任意分配,并提供所需的隔离。它将用户消息发布到所有应用程序。它还会汇总通过 SUB 套接字从应用程序发送给用户的所有消息。

      应用程序发送两部分消息,第一部分是用户身份,第二部分是实际消息。网关/代理基于身份将该消息发送给用户。将创建广播的特殊身份,网关(如果已收到广播标识)将通过 PUB 套接字将消息发布给所有用户。

      用户连接到网关中的 ROUTER PUB 套接字。将从两个套接字接收公平排队的数据。发送时,邮件将仅发送到网关的 ROUTER 套接字,而不是 PUB 套接字。

      问题:

      Q1 :上述架构有任何缺陷吗?

      Q2 :是否有可能进一步改善它?

      假设Q2

      的度量标准
      1. 用户和应用程序本质上是动态的,它们自己连接和断开连接,设计应该承受
      2. 用户定期向服务器报告其状态,设计应有助于延迟小于333 [ms] (用户,通过互联网连接到服务器,广域网连接btw用户和服务器提供延迟多小于333 [ms]
      3. 服务器和用户之间的
      4. 无损传输(在后端进行确认,如果丢失则进行重新传输)

1 个答案:

答案 0 :(得分:2)

你可以试试Malamute,它可以满足您的需求,更像是信用流,保持活力,跟踪。

Malamute是基于zeromq和zeromq社区的一部分的小型经纪人。您可以将Malamute作为应用程序内的组件运行,并且不需要专门的服务或守护程序。

如果您正在使用C或C ++,因为它自然地集成了。它还具有更多语言的绑定。

https://github.com/zeromq/malamute