ZeroMQ:UI,服务器和hetrogenous worker之间的命令响应和状态回调

时间:2014-11-13 13:59:03

标签: design-patterns asynchronous architecture zeromq server

我正在尝试建立一套包含以下内容的程序:

  • 一个UI(或者可能是多个UI)
  • a"服务器"
  • 一些"工人"。

UI是用户与系统交互的方式,服务器进行处理和编组,工作人员处理各种硬件设备。此外,任何数量的这些元素可能位于不同的平台上(C,C ++,Java,Python是目前为主要的),以及不同的物理机器。工作人员不可互换 - 服务器知道哪个人可以根据工作人员告诉自己的内容做什么。

例如,想象一下工人可以煮咖啡,就像这样:

  • 工人A到服务器:"嗨,我是一台咖啡机,我准备好去了#34;
  • 服务器到用户界面:"嗨,我这里有一台咖啡机"
  • UI到服务器(一段时间后):"用户现在想要一杯咖啡,因为你有一台机器"
  • 服务器到UI:"正在努力。您的订单号是#42"
  • 服务器到工人A:"咖啡请"
  • 工人A到服务器:"即将到来"
  • 工人A到服务器(一段时间后):"在这里你去"
  • 服务器到用户界面:"咖啡订单#42为你!"

我并不期待大量的流量 - 最糟糕的情况是每秒几百包,而且通常要少得多。每个程序中的线程都不是问题,除非通信套接字都等待响应!

我计划使用ZeroMQ来组织所有这些,并且我在服务器和工作人员之间以及UI和服务器之间有一个基本的REQ-REQ锁步。但是,当硬件设备需要很长时间才能完成所要求的内容时,这种同步特性似乎不能很好地工作。

似乎也不允许我做一些让服务器通知UI有关更改的事情,并且工作人员通知服务器他们的状态更改,而不在每个链接上设置第二个端口。

ZeroMQ(或其他MQ,甚至)是否有办法处理这种设置?

0 个答案:

没有答案