关于一种页游服务器的想法
2013-01-15 17:12
260 查看
这几天一直写上层逻辑,因为是sns游戏的,所以压力不是很大,但还是想做一套页游mmorpg类游戏的框架。闲暇时候就玩玩天龙八部,读读征途的代码。机缘巧合,遇见了之前天龙八部的服务器引擎工程师,交流了很久才知道,现在网上流传的天龙八部的版本已经很老很老了。据他说现在的天龙八部的服务器框架也加上了网关的设计,负责网络均衡;添加了消息队列,分离了通信和逻辑处理。
不过我仍然觉得旧框架可以负载现在的页游服务器,旧的线程机制是这样,每个线程负责一个地图,并且负责这个地图上面玩家的与客户端的通信、逻辑处理,负责这个地图上面的怪物AI。搜集了一些数据。
send && recv 是系统函数,每秒大概可以执行18w次。(听一个主程讲座记录)
线程每秒可以执行处理15w条消息(前项目所得数据)
线程每秒跑50帧,一帧大概20ms,这20ms可以驱动4k只怪物的AI(查询一个在线游戏所得)
现在我们假设一个线程负责一个地图,这张地图上面,大概有400只怪物,1000人,每人每秒大概3次操作。也就是说要处理大概3k条消息,驱动400只怪物,大概要有6k次的系统调用。发送处理,我们做这样的处理,不能实时的发送给客户端,每个连接每秒发送三次。
这样消息处理占用了20ms,send && recv的系统调用占用了33ms,抛去这些消耗,剩下的CPU资源完全可以驱动这400只怪物。
当然我们的每个线程一定要做成可以配置的,比如对于开服时候的新手村,一定要用独立的线程去负责,其他的70级-80级的地图我们可以让一个线程去负责2-3张地图。那么我们的页游服务器就可以这样设计:
为了保证单线程的逻辑,我们将公共处理的数据比如说帮派,好友放到世界服去处理,另外日志服务器、数据库缓存服务器也独立出来。
既然构架无所谓好坏,那么够用就行,不折腾。
十分期待各位大神,批评指导!!!
不过我仍然觉得旧框架可以负载现在的页游服务器,旧的线程机制是这样,每个线程负责一个地图,并且负责这个地图上面玩家的与客户端的通信、逻辑处理,负责这个地图上面的怪物AI。搜集了一些数据。
send && recv 是系统函数,每秒大概可以执行18w次。(听一个主程讲座记录)
线程每秒可以执行处理15w条消息(前项目所得数据)
线程每秒跑50帧,一帧大概20ms,这20ms可以驱动4k只怪物的AI(查询一个在线游戏所得)
现在我们假设一个线程负责一个地图,这张地图上面,大概有400只怪物,1000人,每人每秒大概3次操作。也就是说要处理大概3k条消息,驱动400只怪物,大概要有6k次的系统调用。发送处理,我们做这样的处理,不能实时的发送给客户端,每个连接每秒发送三次。
这样消息处理占用了20ms,send && recv的系统调用占用了33ms,抛去这些消耗,剩下的CPU资源完全可以驱动这400只怪物。
当然我们的每个线程一定要做成可以配置的,比如对于开服时候的新手村,一定要用独立的线程去负责,其他的70级-80级的地图我们可以让一个线程去负责2-3张地图。那么我们的页游服务器就可以这样设计:
为了保证单线程的逻辑,我们将公共处理的数据比如说帮派,好友放到世界服去处理,另外日志服务器、数据库缓存服务器也独立出来。
既然构架无所谓好坏,那么够用就行,不折腾。
十分期待各位大神,批评指导!!!
相关文章推荐
- 一种并发服务器关于进程的问题
- 关于服务器数据验证,一种比较优雅简便的Python解决方法
- 去年的齐鲁软件大赛,关于语义识别方面,一种简单的实现想法。
- 关于一种音响噪声的想法
- 关于单链表的反转一种复杂的想法
- 有关于在myeclipse中java向服务器发送请求返回数据有中文乱码的一种情况及解决
- 关于下一代IM服务器的一点想法
- 关于建立专家Twitter社区的一种想法
- 关于“使用本服务器,放到正规的第三方服务器就不安全”的想法
- 关于下一代IM服务器的一点想法
- 关于缓存的一种想法
- 关于在apache服务器环境下的项目上传nginx环境下页面只有主页正常,其他页面404的一种情况
- 关于Web服务器时间格式问题
- 关于企业开发运维自动化的一些想法
- 关于腾讯云服务器不能用公网ip访问的解决方案
- linux 关于主机服务器双网卡bond配置
- 关于web请求的到数据但是报服务器500错误
- 关于c#的split的另外一种技巧
- 关于uboot中tftp上传内存数据到tftp服务器
- 关于动态生成输入界面的一些想法及实践