请求者:
# requester.coffee zmq = require 'zmq' context = new zmq.Context() socket = zmq.socket 'req' socket.bind 'tcp://127.0.0.1:5555',( error ) => throw error if error? console.log 'Requesting writer bound to port 5555' setInterval ( -> socket.send 'helo world' ),1 response_count = 0 t0 = new Date() / 1000 socket.on 'message',( message ) -> response_count += 1 # x = message.toString 'utf-8' if response_count % 1000 is 0 t1 = new Date() / 1000 console.log "received #{ parseInt response_count / ( t1 - t0 ) + 0.5 } messages per second" response_count = 0 t0 = new Date() / 1000
答复者:
# responder.coffee zmq = require 'zmq' context = new zmq.Context() socket = zmq.socket 'rep' socket.connect 'tcp://127.0.0.1:5555' console.log 'Responder bound to port 5555' process.stdin.resume() request_count = 0 t0 = new Date() / 1000 socket.on 'message',( message ) -> request_count += 1 # message = message.toString 'utf-8' # console.log message socket.send 'helo back' if request_count % 1000 is 0 t1 = new Date() / 1000 console.log "received #{ parseInt request_count / ( t1 - t0 ) + 0.5 } messages per second" request_count = 0 t0 = new Date() / 1000
现在,当我在ubuntu(11.10,8GB,Intel Duo Core 3GHz,NodeJS 0.8.6)机器的单独终端窗口中运行它时,我得到以下输出:
received 135 messages per second received 6369 messages per second received 6849 messages per second received 6944 messages per second received 7042 messages per second received 7143 messages per second received 5952 messages per second received 2967 messages per second received 914 messages per second received 912 messages per second received 928 messages per second received 919 messages per second received 947 messages per second received 906 messages per second received 918 messages per second received 929 messages per second received 916 messages per second received 917 messages per second received 916 messages per second received 928 messages per second
其中(1)看起来有点像在几秒钟后传输通道有一些饱和; (2)感觉不够快.根据this benchmark,我应该是每秒几十万个,而不是几千个消息,这是this discussion(“ZeroMQ:接收10,000个消息大约需要15毫秒”).
我也试图使用python 3编写的回复者,并得到完全相同的数字.此外,我写了一个替代的脚本,主进程将产生一个子进程,并通过stdout / stdin进行通信;我每秒获得大约750条消息(当我增加消息长度时,我看不到太多的差异),这与zeromq实验中的相同的一个ballpark.
这些数字是否预期?这里有什么限制因素?
解决方法
此外,请求/响应模型是同步的.请求进入套接字并阻塞,直到给出响应.随着响应,下一个请求被处理和阻止.
我将请求者脚本从socket = zmq.socket’req’更改为socket = zmq.socket’push’和setInterval( – > socket.send’helo world’),0更改为socket.send’helo world’,而true.然后我将响应者脚本socket = zmq.socket’rep’更改为socket = zmq.socket’pull’并得到此输出
$coffee responder.coffee Responder bound to port 5555 received 282 messages per second received 333357 messages per second received 249988 messages per second received 333331 messages per second received 250003 messages per second received 333331 messages per second received 333331 messages per second received 333331 messages per second ...
原文地址:https://www.jb51.cc/js/151937.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。