ZeroMQ和演员模型

时间:2015-01-04 01:27:43

标签: zeromq pyzmq akka-zeromq

我在扩展使用actor模型和zeromq的应用程序时遇到问题。简单地说:我正在尝试创建数千个通过套接字进行通信的线程。类似于使用Erlang类型的消息传递。我不是出于多核/性能原因而做的,但因为以这种方式构建它会给我非常干净的代码。

从哲学的角度来看,听起来好像这是zmq开发人员想要实现的目标,例如 http://zeromq.org/whitepapers:multithreading-magic

然而,似乎存在一些实际限制。在1024个inproc套接字中,我开始收到“ZMQError:Too many open files”错误。 TCP给我典型的“断言失败:fds.size()< = FD_SETSIZE”崩溃。

为什么inproc套接字有此限制? 为了让它工作,我不得不将项目组合在一起以共享套接字。还有更好的方法吗?

zmq对于这种工作来说是错误的工具吗?即它还是一个网络库而不是一个传递库的演员消息?

1 个答案:

答案 0 :(得分:0)

ZMQ使用文件描述符作为"资源单元"用于inproc连接。操作系统设置的文件描述符有限制,您应该能够对其进行修改(通过快速Google搜索为Windows找到几种可能的途径),但我不知道性能影响可能是什么。

看起来这与使用C代码的ZMQ库有关,C代码可以在系统之间移植以打开新文件,而不是没有受到同样限制的Windows本机代码。