wesom 发表于 2010-12-21 11:51:12

杂谈网络连接处理与游戏逻辑的架构设计

记得前两年做服务器时,一个服务器里面有网络模块,消息队列模块,各个游戏逻辑模块等等,复杂又难以调试,一个玩法逻辑包可能要间隔几百行日志。不得不承认,iocp、epoll、kqueue都很优秀,但如此使用所得也有限。服务器应该在多连接与游戏逻辑处理上做解耦,网络连接应该分摊到多gateway上,逻辑服务器对应的网络连接大大减少,其重心应该在玩家业务处理上来。
client --> gateway × N--> gameserver
gameserver我觉得可以用单线程select模式,连接数少的情况下效率绝对可以接受。以前的一位同事很坚持的告诉我最好是用单线程写游戏逻辑,想写死都难,开发人员易于编码且风险小。确实多线程是把双刃剑,权衡下它能带给你什么。
至于gateway(有的叫proxyserver)被平摊到高连接并发处理,可以考虑iocp、epoll等基于os的网络异步模式,主要就是转发转发再转发。
基本上多连接要求的就是gateway,它的作用也很简单,其他的服务器该干啥干啥,基本上不怎么考虑网络上的要求,更专心的去处理游戏逻辑部分。
本人才疏学浅,大家多拍拍砖...
页: [1]
查看完整版本: 杂谈网络连接处理与游戏逻辑的架构设计