开发多进程,websocket,服务器架构,mysql的,进来聊聊性能;
发布于 7 年前 作者 4176244 5076 次浏览 来自 分享

我说说大概情况: 1.用nodejs作为基础,开发5个不同功能的服务器,类似网易的pemelo; 2.不是cluster,,多进程并发,各个进程功能不同,且每个进程都可以多开,视需要自动开和关,基本自动化; 3.对外使用websocket,对内使用socket进行通信; 4.使用mysql作为数据库; 5.有自己的缓冲机制;

版本基本开发完成,希望有同样开发的朋友一起聊聊性能; QQ:4176244 微信:17051028105 psb.jpg psb (1).jpg

14 回复

“对内使用socket进行通信”,要用那个模块?

net 模块 基本上和c++里面网络通信一样.

想请教下每个进程可以多开这个是通过什么实现的?

想请教下不同子进程模块间如何做到互相发现的?本地 socket 通信是纯 tcp 还是用了域套接字的方案哇

@hi363138911 用nodejs原生的tcp server就可以了,做一个双向的RPC就可以了.

@4176244 网易的pemelo是有前端和后端服务器的,看你的截图,似乎是多端口的,这样切换房间,或者切换游戏,但是需要断开老的服务器端口,然后连接新的服务器端口,这个体验差而且切换速度也慢.

而且广播数据压力也没有分散到前端,都还是在游戏逻辑服务器上.

不过你描述的过于简单,也不知道你具体实现的过程.

@sunwukong2012 不用多端口,实际就是用nodejs写了一遍C++

@4176244 就是一个模块开了很多个子进程?这些子进程是如何交互的?通过纯tcp吗?怎么分担请求的呢?求教

我只是好奇维护所有客户端连接的 前端服务器不用cluster,压力大了,应该撑不住吧. 要么就是和网易pomelo自己写用C++写了一个负载均衡的connector服务器 multi-chat.png

@sunwukong2012 这个也要看实际情况.实际上我实测过,单服连8000没问题.多了,我就没有测试了.这里面考虑的不仅仅是连接,还有数据流量和服务器的处理负荷,只要数据流量允许,那就可以把复杂的计算放在后面的服务,进行分离.

这个要实际测试,数据的延迟问题,及每秒处理的数据包负荷.

@Fov6363 你可以把父进程看成监控进程,子进程通过父进程来交换数据,父进程监控每个子进程的状态,遇到负荷过大,或者子进程出错,随时新开一个或者重启.

@4176244 不用cluster的话,你新开一个进程,也是不能共享监听同端口的把?

回到顶部