websocket onmessage下的并发问题
问题:
我接入了某个websocket服务,这个服务返回消息很多很快,毫秒级别的频繁返回。但我这的onMessage回调内,处理的逻辑还比较复杂的。最近,调试过程中,感觉我这似乎程序有阻塞。想请问下如何解决这样的问题?
如果使用线程处理还是有大量线程开启和关闭的问题,而且服务返回的频率太高,这样得启好多线程?
详细描述
为了更清楚的说明我的问题,自己本地也做了如下测试模拟:
模拟一
如上图所示,模拟一个服务端快速返回,客户端处理较慢的情况,结果是客户端的执行就是被阻塞了,后面的逻辑排队等前面的逻辑处理完再执行,当然,竟然没有被漏掉和打断的。
模拟二
改用worker_threads,程序不阻塞,由线程去处理逻辑,有结果了再返回,如下图:
请各位指点下~
回答
CPU 密集型?
那选型就不对,Node.js 因为异步 I/O 的特点,在 I/O 密集型上有一定优势;而因为单线程的关系,在 CPU 密集型上没有任何优势。
这种情况下在多核 CPU 上只能靠子线程来解决(单核上无解),防止因运算而阻塞了主线程。多线程的话可以考虑使用 cluster 模块,有线程池,比你自己手工维护线程要好很多。
以上是 websocket onmessage下的并发问题 的全部内容, 来源链接: utcz.com/a/24896.html