找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4749|回复: 0

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

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

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-6 05:45 , Processed in 0.013597 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表