Networking 有可能改进这个zmq体系结构吗? 简介:

Networking 有可能改进这个zmq体系结构吗? 简介:,networking,architecture,zeromq,distributed,Networking,Architecture,Zeromq,Distributed,在下面的体系结构中,有三个关键组件。 用户运行用户应用程序的计算机 应用程序-在远程服务器内运行 网关/代理-用户设备和服务器应用程序之间需要隔离 用户设备和服务器应用程序之间的消息流应如下所示 用户应将信息传输至远程服务器,供用户使用 一个或多个服务器应用程序 应用程序应向所有连接的用户广播/发布消息 用户 应用程序应向特定用户设备发送消息 (单播) 此外,一个或多个用户将被任意连接或断开与服务器的连接,一个或多个应用程序将被任意生成或终止 对于上面的问题陈述,我设计了下面的zmq体系结构

在下面的体系结构中,有三个关键组件。

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

  • 用户应将信息传输至远程服务器,供用户使用 一个或多个服务器应用程序

  • 应用程序应向所有连接的用户广播/发布消息 用户

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

  • 此外,一个或多个用户将被任意连接或断开与服务器的连接,一个或多个应用程序将被任意生成或终止


    对于上面的问题陈述,我设计了下面的zmq体系结构

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

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

    用户连接到网关中的
    路由器
    发布
    套接字。将从两个套接字接收公平排队的数据。在发送时,消息将只发送到网关的
    路由器
    套接字,而不是
    发布
    套接字


    问题:
    Q1
    :上述架构是否存在任何缺陷

    Q2
    :有可能进一步改进吗?

    Q2
    假设的度量:

  • 用户和应用程序本质上是动态的,它们自行连接和断开,设计应能承受
  • 用户定期向服务器报告其状态,设计应使延迟小于
    333[ms]
    (通过internet连接到服务器的用户,WAN连接btw用户和服务器提供的延迟远远小于
    333[ms]
  • 服务器和用户之间的无损传输(在后端确认,如果丢失则重新传输)

  • 你可以试试Malamute,它能提供你所需要的,更像是信贷流,保持活力,追踪

    Malamute是基于zeromq和zeromq社区的一部分的小型代理。您可以在应用程序中作为组件运行Malamute,而不需要专门的服务或守护程序

    如果你使用C或C++,那就自然了。它还可以绑定更多的语言


    您比较各自设计方法的核心实用程序是什么?您评估哪些基于事实的定量属性,以及您使用哪些聚合指标来比较单个解决方案和区分更好和更差的替代方案?@user3666197我是zmq的新手,从上周开始学习。因此,首先,我想检查我的理解是否正确,基础设计是否没有任何重大的设计问题。@user3666197但是各种设计的比较因素是1。用户和应用程序本质上是动态的,它们自行连接和断开连接,设计应该能够承受这一点,2。用户定期向服务器报告其状态,设计应使延迟小于333ms(用户通过internet连接到服务器,广域网连接btw用户和服务器提供的延迟远小于333ms)3。服务器和用户之间的无损传输(在后端确认,如果丢失则重新传输)感谢您的建议,我已经开始探索malamute。但是这个项目有稳定的版本吗?还是仍在开发中?你能分享一些用户对malamute的评论吗,如果你有,可以在Android中使用malamute吗?或者可以使用jeroMQ开发一个最小的malamute客户端吗?我认为您可以在android中使用malamute客户端。尝试在zeromq列表中询问。该项目已投入生产,非常活跃。