socket.io处理同一个事件的并发,是排队处理的吗? 我目前的验证结果是排队处理的。是否可以做到并发处理
业务逻辑是这样的
类似答题,将答题的内容发送到同一个事件。到了一定时间以后,像所有人广播同一份答案。
在压测的时候,发现时间到了,但是答题事件还是不断的处理中,广播的事件也没有发送,等答题事件处理完以后,广播的事件才发送。。所以目前看是排队处理的。
所以不知道,一个服务,是否可以并发处理同一个个事件。
socket.io是单进程的,无法并发处理。你们可以吧socket.io当作一个通讯通道,只有在需要给客户端推送数据的时候调用(类似web-msg-sender的用法),也就是只做推送,其它业务逻辑仍然交给mvc框架多进程处理。
socket.io 整个服务就只有一个单进程单线程,所以得省着点用,只用于处理通信过程,其它业务逻辑处理要设法分出去。
比如你的“答题”处理,可以像 walkor 说的那样走另外的 HTTP 服务,如果要通过 socket.io 来提交也可以,但不能在 socket.io 的 Worker 中直接处理,而要通过内部通信协议转发给其它的 Worker 去处理,那样就可以达到你说的“并发处理”的效果了。
socket.io是单进程的,无法并发处理。你们可以吧socket.io当作一个通讯通道,只有在需要给客户端推送数据的时候调用(类似web-msg-sender的用法),也就是只做推送,其它业务逻辑仍然交给mvc框架多进程处理。
socket.io 整个服务就只有一个单进程单线程,所以得省着点用,只用于处理通信过程,其它业务逻辑处理要设法分出去。
比如你的“答题”处理,可以像 walkor 说的那样走另外的 HTTP 服务,如果要通过 socket.io 来提交也可以,但不能在 socket.io 的 Worker 中直接处理,而要通过内部通信协议转发给其它的 Worker 去处理,那样就可以达到你说的“并发处理”的效果了。