请问一下browserquest-php项目换成GatewayWorker的形式需要怎么部署worker

0

现在在以browserquest-php的形式写html5服务端,感觉单个进程上的压力比较大,而且不能热更新,想换成网关+逻辑服务器的形式,求大神提点一下解决思路

已邀请:

walkor

赞同来自:

单进程模式用户间数据容易共享
browserquest本身就设计成单进程模式,单进程模式用户间数据容易共享,不用频繁的进程间通讯,开发简单。


改成gateway网关模式利弊
如果要改成多进程gateway网关模式,代码改动量会很大,要求开发者对于browserquest运行机制及代码结构非常熟悉。
即使开发出多进程模式,由于进程间要频繁通讯,整体性能不一定比单进程好。


拿browserquest来说
拿browserquest来说,虽然是单进程模式,但是由于游戏内没有阻塞IO,单进程估计也能支持上千人。
browserquest本身地图并不大,如果是上千人在线估计已经是满屏都是人了,支持再高的在线人数意义不大,人数继续增加的话应该去考虑增加一个browserquest服务,采用多房间(多服)的方式平摊压力。每个服单独的实例,互不影响,可以几乎无限的水平扩展。


所以就browserquest来说,单进程模式+多实例分服的方式会比较好。


非要多进程写个browserquest
假设非要突破browserquest单进程限制,可以考虑为每个地图创建一个进程,用户切换地图时,关闭原来socket链接,并重新链接连到对应的地图服务器进程。由于不同地图的人之间不会有太多的消息通讯,所以不需要太多进程间通讯,这样每个地图都可以承载上千人,那么多个地图就可以承载更多人。


这样一组browserquest进程应该比原来单进程承载更多的在线用户,如果用户量继续增加,还是老套路,开新的游戏服务器房间。


再优化
再优化可能就是把游戏拆分成更多的服务,登陆服务、接入服务、地图服务、AI服务等,然后针对每个服务做优化,多进程多服务器支持等。具体如何做与服务类型有关,得具体问题具体分析了。


我本身不是做游戏的,抛砖引玉,欢迎大家讨论

要回复问题请先登录注册