我希望Linux(服务器)主机上的一个应用程序与VM中的Win7(客户端)上的应用程序进行通信。Lib的首选是ZeroMQ。但是如何管理异步任务呢?
让我举一个例子: VM中的应用程序以任意间隔生成任务,并将它们发送到Linux盒。这将处理它们,但需要一些时间来回答。此时,REQ/REP模式中的套接字被阻塞,来自WinApp的传入任务不能转发给LinuxApp。我该怎么解决这个问题?这通常是如何解决的,即使没有0MQ。我必须同时连接服务器和客户端并建立两个连接吗?
要求:
因此,不可能实现REQ/REP/REQ/REP/.序列。
发布于 2012-11-06 12:15:16
看看ZMQ指南中描述的几种模式,看看其中一种模式是否比简单的REQ/REP
更适合。
一般来说,linux上的服务器似乎需要实现ROUTER/DEALER
模式,将传入的任务转发给一组工作人员。
与传统的基于套接字的客户机/服务器解决方案相比,ZMQ具有自己的拓扑结构。其他解决方案可能是实现基于套接字的服务器,该服务器使用线程池转发传入任务。
更新:,因为您已经对您的需求进行了改进,因此我认为,对您的目的而言,majordomo模式可能是一个好的、可靠的起点。也许有更合适的模式,如@gvd在他的评论中提到的。
发布于 2012-11-09 21:07:30
正如DevNoob所说,异步客户端服务器模式听起来像您需要的模式。
"LRU“的意思是最近使用的最少,但我已经从指南的最新文本中删除了这个术语,现在使用的是”负载平衡“。因为我们的目标是在一组工人之间实现平衡.
发布于 2012-11-18 04:33:54
我知道您提到了ZMQ作为您的自由选择,但我可以谦卑地建议Akka (www.akka.io)吗?Akka有一个ZQM扩展,我们有很好的经验,所以您可以很容易地在它的传输机制(基于网络的)和ZMQ之间进行转换。它实现了Actor模型,更重要的是,它为跨工作参与者的异步处理提供了一个'ask‘和一个'tell’。在消息传递速度方面,Akka似乎也与ZMQ这样的公司竞争,而且在我的经验中记录的要好得多。
Akka没有跨语言支持,但我们现在使用ZMQ扩展来实现这一点。ZMQ和Akka的结合已经证明是一个非常强大和灵活的平台。
https://stackoverflow.com/questions/13258030
复制相似问题