首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异步任务。哪种建筑?(或zeroMQ中的模式)

异步任务。哪种建筑?(或zeroMQ中的模式)
EN

Stack Overflow用户
提问于 2012-11-06 19:31:29
回答 3查看 2K关注 0票数 3

我希望Linux(服务器)主机上的一个应用程序与VM中的Win7(客户端)上的应用程序进行通信。Lib的首选是ZeroMQ。但是如何管理异步任务呢?

让我举一个例子: VM中的应用程序以任意间隔生成任务,并将它们发送到Linux盒。这将处理它们,但需要一些时间来回答。此时,REQ/REP模式中的套接字被阻塞,来自WinApp的传入任务不能转发给LinuxApp。我该怎么解决这个问题?这通常是如何解决的,即使没有0MQ。我必须同时连接服务器和客户端并建立两个连接吗?

要求:

  • 客户端是唯一的任务生成器。
  • 服务器为每个连接的客户端创建一个工作线程。
  • 服务器在客户端(工作线程)之间建立唯一的连接。(一些隧道)
  • -> (每个客户端-工作线程对之间的REQ/REQ在一个套接字上)
  • 服务器必须立即转发传入的任务。
  • 服务器必须能够处理多个客户端(因此也可以处理到WTs的连接)。

因此,不可能实现REQ/REP/REQ/REP/.序列。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-06 20:15:16

看看ZMQ指南中描述的几种模式,看看其中一种模式是否比简单的REQ/REP更适合。

一般来说,linux上的服务器似乎需要实现ROUTER/DEALER模式,将传入的任务转发给一组工作人员。

与传统的基于套接字的客户机/服务器解决方案相比,ZMQ具有自己的拓扑结构。其他解决方案可能是实现基于套接字的服务器,该服务器使用线程池转发传入任务。

更新:,因为您已经对您的需求进行了改进,因此我认为,对您的目的而言,majordomo模式可能是一个好的、可靠的起点。也许有更合适的模式,如@gvd在他的评论中提到的。

票数 4
EN

Stack Overflow用户

发布于 2012-11-10 05:07:30

正如DevNoob所说,异步客户端服务器模式听起来像您需要的模式。

"LRU“的意思是最近使用的最少,但我已经从指南的最新文本中删除了这个术语,现在使用的是”负载平衡“。因为我们的目标是在一组工人之间实现平衡.

票数 3
EN

Stack Overflow用户

发布于 2012-11-18 12:33:54

我知道您提到了ZMQ作为您的自由选择,但我可以谦卑地建议Akka (www.akka.io)吗?Akka有一个ZQM扩展,我们有很好的经验,所以您可以很容易地在它的传输机制(基于网络的)和ZMQ之间进行转换。它实现了Actor模型,更重要的是,它为跨工作参与者的异步处理提供了一个'ask‘和一个'tell’。在消息传递速度方面,Akka似乎也与ZMQ这样的公司竞争,而且在我的经验中记录的要好得多。

Akka没有跨语言支持,但我们现在使用ZMQ扩展来实现这一点。ZMQ和Akka的结合已经证明是一个非常强大和灵活的平台。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13258030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档