使用ZeroMQ / NFS分发实时市场数据?
假设你有一台机器,它实时接收来自交易所的股票价格。这些价格需要以最快的方式传输到你网络中的另外50台机器上,以便每台机器都能对数据进行自己的处理。
那么,怎样才能把数据最快地发送到这50台机器呢?
我希望找到一个可以在linux
上运行,并且使用python
作为编程语言的解决方案。我想到了一些方法:
(1) 使用python
的ZeroMQ
模块将数据发送给其他机器。
(2) 将数据保存到一个共享文件夹,然后让这50台机器通过NFS
来读取。
还有其他的想法吗?
3 个回答
0
绝对不要使用文件系统。ZeroMQ 是一个很棒的解决方案,并且在 Python 中有相关的支持。我这里有一些例子:www.coastrd.com。如果你需要更多帮助,可以联系我。
1
我很确定,用ZeroMQ发送信息会比保存和加载文件快很多。
还有其他方法可以在网络上发送信息,比如原始套接字(这是更底层的方式)、像RabbitMQ这样的AMQP实现(这种方式更有结构和复杂),还有HTTP请求和回复等等。ZeroMQ是一个不错的选择,但具体还得看你的情况。
你也可以看看一些分布式计算的框架,比如IPython里面的那些。
1
我推荐使用zeromq和发布/订阅的套接字。
在你提到的第二种选择中,你的“客户端”需要手动刷新才能获取文件的修改,就像轮询一样。如果出现写入错误,你还得自己处理,这可不容易。
zeromq简单、可靠且功能强大,我觉得非常适合你的情况。