我说说大概情况: 1.用nodejs作为基础,开发5个不同功能的服务器,类似网易的pemelo; 2.不是cluster,,多进程并发,各个进程功能不同,且每个进程都可以多开,视需要自动开和关,基本自动化; 3.对外使用websocket,对内使用socket进行通信; 4.使用mysql作为数据库; 5.有自己的缓冲机制;
版本基本开发完成,希望有同样开发的朋友一起聊聊性能; QQ:4176244 微信:17051028105
“对内使用socket进行通信”,要用那个模块?
net 模块 基本上和c++里面网络通信一样.
想请教下每个进程可以多开这个是通过什么实现的?
想请教下不同子进程模块间如何做到互相发现的?本地 socket 通信是纯 tcp 还是用了域套接字的方案哇
@hi363138911 用nodejs原生的tcp server就可以了,做一个双向的RPC就可以了.
@4176244 网易的pemelo是有前端和后端服务器的,看你的截图,似乎是多端口的,这样切换房间,或者切换游戏,但是需要断开老的服务器端口,然后连接新的服务器端口,这个体验差而且切换速度也慢.
而且广播数据压力也没有分散到前端,都还是在游戏逻辑服务器上.
不过你描述的过于简单,也不知道你具体实现的过程.
@hyj1991 纯 tcp
@Fov6363 子进程
@sunwukong2012 不用多端口,实际就是用nodejs写了一遍C++
@4176244 就是一个模块开了很多个子进程?这些子进程是如何交互的?通过纯tcp吗?怎么分担请求的呢?求教
我只是好奇维护所有客户端连接的 前端服务器不用cluster,压力大了,应该撑不住吧. 要么就是和网易pomelo自己写用C++写了一个负载均衡的connector服务器
@sunwukong2012 这个也要看实际情况.实际上我实测过,单服连8000没问题.多了,我就没有测试了.这里面考虑的不仅仅是连接,还有数据流量和服务器的处理负荷,只要数据流量允许,那就可以把复杂的计算放在后面的服务,进行分离.
这个要实际测试,数据的延迟问题,及每秒处理的数据包负荷.
@Fov6363 你可以把父进程看成监控进程,子进程通过父进程来交换数据,父进程监控每个子进程的状态,遇到负荷过大,或者子进程出错,随时新开一个或者重启.
@4176244 不用cluster的话,你新开一个进程,也是不能共享监听同端口的把?