Architecture 应用程序直接与消息队列通信,而不是与代理通信(前端服务)

Architecture 应用程序直接与消息队列通信,而不是与代理通信(前端服务),architecture,message-queue,iot,proxy-server,Architecture,Message Queue,Iot,Proxy Server,我们正在为我们的产品设计一种新的体系结构。我们的产品并不完全是物联网——设备与客户端的一个盒子进行通信,而这个盒子与我们的服务器进行通信 我们有两种选择: 该框将直接向队列发送消息,该队列将由工作服务器拾取并在轮到它时处理 该框将向前端服务器发送消息。服务器所做的只是将消息放入队列中,供工作人员处理 每种方法都有利弊。与队列直接通信的第一个优点是,我们不需要在机器上花钱来保存前端服务 使用前端服务器的最大优点是,它作为一个抽象层,与我们正在使用的队列技术相对应——因此,如果我们更改队列,我们不需

我们正在为我们的产品设计一种新的体系结构。我们的产品并不完全是物联网——设备与客户端的一个盒子进行通信,而这个盒子与我们的服务器进行通信

我们有两种选择:

  • 该框将直接向队列发送消息,该队列将由工作服务器拾取并在轮到它时处理
  • 该框将向前端服务器发送消息。服务器所做的只是将消息放入队列中,供工作人员处理
  • 每种方法都有利弊。与队列直接通信的第一个优点是,我们不需要在机器上花钱来保存前端服务

    使用前端服务器的最大优点是,它作为一个抽象层,与我们正在使用的队列技术相对应——因此,如果我们更改队列,我们不需要使用新版本更新所有客户端,以使它们继续工作。我们考虑的另一个优点是它允许我们模拟synchronios调用


    当然,每种方法都有许多优点和缺点。建议的工作方式是什么?最佳实践?安全性?

    < P>一个要考虑的方面是可伸缩性。为此,您需要支持负载平衡器

    虽然一些消息队列协议可以在负载平衡器上运行(例如,请参阅),但我建议在做出决定之前对其进行测试。 如果您使用普通REST,那么负载平衡器兼容性就不是问题

    其他需要检查的区域包括:
    *防火墙兼容性:“盒子”是否与服务器位于不同的netowkr(如公司内部网)中?在这种情况下,HTTP/REST是一个更安全的选择。

    考虑的一个方面是可伸缩性。为此,您需要支持负载平衡器

    虽然一些消息队列协议可以在负载平衡器上运行(例如,请参阅),但我建议在做出决定之前对其进行测试。 如果您使用普通REST,那么负载平衡器兼容性就不是问题

    其他需要检查的区域包括:
    *防火墙兼容性:“盒子”是否与服务器位于不同的netowkr(如公司内部网)中?在这种情况下,HTTP/REST是一个更安全的选择。

    您计划使用什么消息传递协议?是mqtt吗?是否需要与设备进行双向通信?@SergeiRodionov最有可能是AMQP。有些服务需要双向通信。在这种情况下,我对AMQP没有太多经验。我们使用MOSQUITO/mqtt与端点进行双向通信。也许您可以链接两个mqtt服务器来完成您需要的任务。您计划使用什么消息传递协议?是mqtt吗?是否需要与设备进行双向通信?@SergeiRodionov最有可能是AMQP。有些服务需要双向通信。在这种情况下,我对AMQP没有太多经验。我们使用MOSQUITO/mqtt与端点进行双向通信。也许您可以链接两个mqtt服务器来完成您需要的任务。