最近在使用socket.io开发一个实时交互应用,遇到一个问题:
1、socket.io所在的nodejs进程,由于需要负责与所有的client进行通信、心跳,再加上要做游戏内部的逻辑处理,所以占用了主线程cpu,并发连接数上不去
现在想把架构修改一下: 1、Nodejs工作进程(水平扩展) 负责与client通信、广播消息、心跳等,不处理业务逻辑。收到请求后,把请求转发给逻辑处理进程来进行业务处理
2、逻辑处理进程 负责内存中保存业务数据,接收工作进程的消息,进行逻辑处理,并把处理结果返回。
现在的问题是,如何实现这2种进程之间的通信比较好。 1、据我所知,node只提供了主、子进程之间的通信api,且写起来很麻烦 2、一种方法是工作进程和逻辑处理进程都作为一个http服务器存在,互相之间通过http通信,但感觉这种方式好像比较‘重‘
请教高手有没有好的办法