??xml version="1.0" encoding="utf-8" standalone="yes"?>久久天天婷婷五月俺也去,久久99精品久久久久久,国产亚洲色婷婷久久99精品91http://www.shnenglu.com/beautykingdom/category/12972.htmlzh-cnTue, 07 Sep 2010 06:51:38 GMTTue, 07 Sep 2010 06:51:38 GMT60THE SUN GAME SERVER ARCHITECTUREQ{载)http://www.shnenglu.com/beautykingdom/archive/2010/08/31/125410.htmlchatlerchatlerTue, 31 Aug 2010 07:57:00 GMThttp://www.shnenglu.com/beautykingdom/archive/2010/08/31/125410.htmlhttp://www.shnenglu.com/beautykingdom/comments/125410.htmlhttp://www.shnenglu.com/beautykingdom/archive/2010/08/31/125410.html#Feedback0http://www.shnenglu.com/beautykingdom/comments/commentRss/125410.htmlhttp://www.shnenglu.com/beautykingdom/services/trackbacks/125410.htmlSun‘s Game Server technology logically is divided vertically into 3 layers: Communications,Simulation Logic, and Object Store.
     The Object Store layer contains the game states for all games running in the Game Server. It is a highly efficient(tenths of a millisecond per operation), scalable, and fault-tolerant transactional database layer that provides deadlock proof access to the simulation objects, which can either be locked (a write-lock) or peeked (a nonrepeatable read).
     The Simulation Logic layer is responsible for executing the actual game code. Here, tasks are created based on incoming events which, in turn, check objects out of the Object Store as needed. When a task is completed, the object is updated and returned to the Object Store.
     The Communications layer organizes player communication into channels of grouped communicators. It manages routing of data packets between the players and the Simulation Logic servers, and between the players themselves. It also is responsible for translation to and from other forms of networking (e.g., HTTP communications to and from cell phones).

image form here

from:


chatler 2010-08-31 15:57 发表评论
]]>
谈游戏服务?--功能模块上来?/title><link>http://www.shnenglu.com/beautykingdom/archive/2010/01/31/106871.html</link><dc:creator>chatler</dc:creator><author>chatler</author><pubDate>Sun, 31 Jan 2010 04:10:00 GMT</pubDate><guid>http://www.shnenglu.com/beautykingdom/archive/2010/01/31/106871.html</guid><wfw:comment>http://www.shnenglu.com/beautykingdom/comments/106871.html</wfw:comment><comments>http://www.shnenglu.com/beautykingdom/archive/2010/01/31/106871.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/beautykingdom/comments/commentRss/106871.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/beautykingdom/services/trackbacks/106871.html</trackback:ping><description><![CDATA[<p style="margin: 10px 0px;">本文弟谈Q新手看Q老手拍砖Q{载请注明出处<a href="http://www.shnenglu.com/ziyebuboka/" style="color: #0066ff; text-decoration: none;">http://www.shnenglu.com/ziyebuboka/</a></p>     游戏服务器在|游上的作用不容考虑Q游戏能做大C么程度,q是有很大的依靠的,q篇文章先从功能模块的角度来谈一个完善的游戏服务器需要实现哪?br>    一Q游戏服务器的作用:q接各个|游客户端,实现各客L的通信Q连接,数据操作<br>    二:先从大分cM来:游戏服务器按一般架构来说具?<br>            1:登陆验证注册和̎h关的所有操作的服务?nbsp; 我们UC为registerserver<br>            2Q游戏逻辑操作服务?我们UC为gameserver<br>            不用l说大家也明白了Q说一个玩家登陆进入游戏世界的程Q玩家打开游戏客户端(q之前会有更新操作,不过q只是连接更新服务器的一个文件比对和下蝲q程Q我们不他列ؓ游戏服务器之内)说到q里朋友会发现游戏登陆上目前有两大类Q一cL先选服务器后输入̎?一cL先输入̎号后选服务器Q这里说下区?br>先选服务器后输入̎L一般来说都是将registerserver和gameserver配对Q就是你先选择服务器,而后你连接上的就是此服务器的registerserverQ通过此registerserver来进行̎号验证等{。另一cd输入账号的,无非是先制定一个中心registerserverQ或者是随机一个,因ؓregister有时候会弄好多个pl配|来做动态均衡)Q̎号验证成功后再显C服务器列表Q然后玩安择了服务器后,则从指定服registerserverL据库查询玩家此服的角色列表(当然了,q里如果非有人的服务器是做成查询角色列表׃gameserver走的程Q我也没意见Q。返回后Q客Lq入角色选择界面Q客L与registerserver断链Q玩安择角色Q与gameserverq接Q去数据库提取角Ԍ注册q入游戏服游戏世界,反馈角色信息l客LQ客Lq入游戏世界。然后消息发送过来发送过ȝ开始了。。。。。?br>            上面说的是针对一个普通的一对一架构的服务器所有的一个登陆流E,看到q里Q朋友们应该对registerserver和gameserver的基本功能有所了解了。一个是登陆验证用(垃圾点的公司没有注册̎L主页的话也会通过q个在游戏里直接注册账号。。。)到登陆进入游戏世界的q程?br>             再稍微高U点的就是加个聊天服务器了,因ؓ聊天q个功能实在是太耗性能了,特别那啥的那公聊Q你发个一句,服务器得有多h发多少回。。?br> 打个比方你发一句话 50个字那就?00 一个服有那么个几K人的话,打比方5K?一句话发送就得是一个全服h口大FOR循环Q网l还得消耗掉5000*100字节<br>所以你看各游戏公聊国聊那啥的都旉限制要不收费,他扛不住啊?br>             所以这个地方就出来个性能优化Ҏ了,加个聊天服务器,也就是玩家在登陆成功与gameserverq接成功的同时要与聊天服务器q接成功Q聊天服务器有个全服在线角色表,一个大FOR循环和那啥的5000*100p他来发吧Q至对gameserver没媄响了?br>             好了Q一个普通服务器的基本介l就说到q里Q读者也应该有个基本了解了,具体架构上的׃l说了,赶明换个帖子发。这里还是接标题从功能上来分析服务器?br>            q里只分析游戏服务器了Qregisterserver׃考虑了?br>            一个游戏服务器他的作用在与Q所有的游戏数据操作都将在这里完成,我们只客L作ؓ昄和一个数据的完善~存。一切的操作都必d游戏服务器的验证之后才能完成?br>           功能模块分类Q本Z_有多余或遗漏的,Ƣ迎补充Q:<br>              1Q脚本模?br>              2Q属性模?br>              3Q网l模?br>              4Q数据库模块<br>              5Q日志模?br>以上所列的Z个完善的游戏服务器所必须实现的功?下面一一来说<br>1Q脚本模?br>      没有脚本模块Q脚本策划就得喝西北风,LUA首选很不错?br>      具体LUA的学习,推荐LUAE序设计Q这玩意不用qQ会卛_?br>      E序员要写好几个CPPQ完成的功能?--》在C++中Q意的调用LUA函数Q或是执行一个LUA文gQ,在LUA中Q意调用你提供l脚本策划的C++函数接口Q如此功能实现后Q哈哈,E序员们Q你们的工作负担p了,很大一部分的逻辑~程交l策划们d成了<br>     举例Q程序实C个接口例?say(LPCSTR szSay)  Q则{划可调用此接口 function  mySay()  say("Ƣ迎来到游戏世界") endQ就?br>    可用到的地方Q具体物品的使用逻辑Q特DQ务的逻辑Q活动逻辑Q特DNPC逻辑{等{等Q只要你愿意Q跑步都可用LUA?br>     比如C++里可实现一子接口QAddItem 增加个物?nbsp; ChangeMap 跛_?甚至是AddLevel{等 而由LUA调用此类接口Q而后是C++里做些操作,比如玩家点击物品是调用相应物品的脚本:例:点击 血?调用 LUA 的血瓶脚本,执行LUA函数调用AddHp<br>     脚本模块很重要,可极大的方便工作Q还有调试和l护Q因Z改脚本,服务器是不用重编译的Q则意味着可在调试中随意修改,甚至可在q营q程中随意修Ҏ物品功能 某Q?某活动。。。,只需C++到LUAQ把q个LUA函数RELOAD下即?br>     具体的游戏应用脚本的例子 大家|上找找?一坨子开源的?br>2Q属性模块:呵呵Q不知道我取q个名字OK不OKQ我也觉得不是很合适,大家又更好的命名没?<br>     NPC的基本属性配|,物品的基本属性配|,叫属性配|可能更合适点Q意思就是你要提供一个模块供{划可填入各个属性配|,甚至是GUI的配|又或者是d配置。对于这个,我推荐用EXCEL表格?br>    例如QNPC的表D包?nbsp; NPC名字  模型~号   血?nbsp;   蓝量   Ud速度    AI  {等Q而后有策划往里面随意填配|?q里比如AI是一个对应的脚本文g<br>     q个d表格q序员实现Q功能是要求要自由化Q不然的?{划加一?你咋办,不至于从d开始你的代码都得改吧,肯定能做到直接在NPCPROPERTYl构体里直接加一条和表格新加的对应就OK了?br>   如果OK得话Q最好再提供个编辑工L{划QQ务的相同模式也可由此来实玎ͼd描述  d要求 对话1  对话2  对话3  奖励1 奖励2 奖励3<br>   物品Q物品名?模型~号 职业   {   d  脚本  <br>   不然你M至于d认ؓq些都是写代码里的吧。也可能有h想用XML  随便?不过我这里不想用XML 为啥  EXCEL清晰?׃行条?br>    q个模块是数值策?d{划的天?br>3Q网l模快:q个没啥好说?nbsp; 一个基本功能,游戏世界都是在这之上也能成型Q做好链接维护,收发消息<br>4Q数据库模块Q对数据的保?其实q里我热衷于使用工厂模式Q本地调试服务器具体逻辑用本地文档方式,上测试服上外|则用数据库Q所以这里叫数据操作模块比较妥当点,是玩家保存数据Q保存帮z֕ {等世界信息的具体操作,q个很重?br>5Q日志模块:我将此日志模块分Z大类Q一cL游戏服务器调试维护用日志Q一cL游戏q营用日志,可选择使用本地文档或是数据库模式记?br>    调试l护日志没啥好说的,q营日志说说Q是l客服提供的Q谁消费了什?交易向 物品向 {等的记?GM操作的记录等{?比如万一某玩家装备被盗了Q则可通过此来证明? <br><br> 接着一l箋Q其实写本文从内行技术角度来看,本n没什么技术含量,但是俗话说的好,隔行隔山Q内行看门道Q外行那啥什么,反正是惌这玩意Q但是又没搞q的人看的。反正都是随便ؕ写了Q爱看的看,准备写个功能模块大概 再写个架构得大概Q而后去从网l包开始搞个最单最轻量的小架构Q力图让知道~程是啥的就能在上面搞东?br>      q是l箋谈功能模块?br>      一、还有个  AI模块Q这个可不能忘啊<br>      不过要注意,我这里提到的AI模块和我一里面所提到的几个AI地方说指AI不是一会事情?br>      q里的AI模块Q哈哈,是所谓的法了,法达h们NB的地方了?br>      针对NPC怪物{,比如最基本的寻路算法?br>      此模块达到的效果是什么呢Q就是:怪物M又活Q怪物看见你知道追你,怪物知道打你 都知道寻路躲障碍<br>      介绍下最基本的A*法?什么A B C D E F D?br>      怪物要打?得追你,但是他ؓ啥知道跟你走呢,或者说你点M个地方,为啥p自动走过去,能自动的l开障碍呢。这个模块就是实现这些基本的东西?br>      2D的一般都是按格子计算Q就?D了,q有用像素玩的,3D玩坐标的Q等{?其实都是一会事?br>      角色w旁一共有8个格子,你点M个地方,q于是指明了一个方向,角色找到正Ҏ向的w旁最q格子,判断此格子是否有LQ如果无则走q去Q如果有L则搜索n旁另一个格子,然后是q么一直递归Q知道到辄Ҏ子?br>     基本的自动寻路算法就是上面这么一D话Q当然实际操作中Q肯定不会用q么Ҏ率的法了,q里是单介l下q个zdN-》B之前的N-》A*法。。NA啊。具体的大家可以L本h工智能的书看?br>     服务器要一下怪物走哪了就l周围玩家同步下消息Q所以服务器需要这玩意Q这理由充分吧、、?br>     客户端也需要,l玩家或者宠物自动寻路,内挂使用?br>    Z么我说这里的AI和我在一里面说的不同呢,是因里是实行基本的自动功能,而后你可以在q个模块的基上发展高UAIQ结合脚本,表格配置Q活用技能。比如一个游戏里按档ơ有白?蓝?nbsp; 紫?BOSS<br>白怪么q他这一套最基本的会走\w障会打h可<br>蓝?E微高点了Q在基本模块上扩展,E序里再实现血到一定程度会逃跑 会喊同伙Q?br><br>以上两种可根据属性配|表格模块根据怪物cdd到程序,E序Ҏcd判断是否ȀzL展AI<br><br>表格可如下:<br>NPC名字  cd  <br><br>紫?nbsp; 再高U点 定制AIQ可在程序里预先定义一l高UAIQ比如预先设惛_的十U可能,打个比方Q放A技?放B技?自动加血{等 Q而后也可在表格配|,比如预先表格讑֮好一U怪物最多可?个定制AI<br><br>表格可如下:<br>NPC名字  cd  定制AI1 定制AI2 定制AI3 定制AI4<br><br>E序d到相应类型而激zȝ应模?nbsp;或者此lAI 都用脚本预先写好 也不?q样比写dE序里好<br><br>BOSS  那就得完全特D处理了不是Q脚本发挥作用,完全脚本实现  E序事先一l接口,比如掉什么装备接口,放技能的接口{等QLUA里面q写吧Q接口只要完善,写成个WOW里的一样也很OK<br><br>表格可如下:<br>NPC名字  cd  定制AI1 定制AI2 定制AI3 定制AI4  脚本AI<br><br>?D游戏 下FB BOSS不够的话 玩家q道卡BOSS 几个玩家把BOSS围一圈,让外面的q程玩家打,格子上玩家又是不可重复的QBOSS出不去 有仇恨系?他又只想杀外面打他的玩?D卡那里了,x的玩家打不到 打的到的玩家又不x。。。。。。。怎么办呢Q特DAI处理Q卡BOSSQ系l判断BOSS十秒不出手,放大技能秒杀周围的h。。。?br>     <br>说到底,AI模块是最基本法Q程序定Ӟ脚本定制Q属性表格配|再加脚本特D化处理Q基本就可达到需求了<br><br>二:扩展下前面说的数据库模块和日志模?br>        q里大家要注意,在这cL据库 和IO操作?量使用别的U程来开Q不要和ȝE搞C?br> 按目前流行的架构Q一般都是在服务器上多开U程开启网l接口,另外在专门单开代理E序Q消息发送到数据代理Q让代理来实现数据操作?br>       日志模块Q本地调试么Q就用文档记录,q营日志Q单开个代理吧Q这个操作挺频繁的,和登录保存角色的代理放一起媄响性能 而且每什么意思,毕竟q个异步互相是不兌?nbsp; E微提醒下就?你要是做 物品向的时?切记不要所有物品都记啊 不然SB了,q个向日志 要是都记录的?那一天都不知道是多少万条记录?万?十万Q百万?<br>   可以 表格配置Q?br>  物品名字  物品ID  是否记录日志    //后面其他列是其他属?br>每次产生物品向时?比如C个装备到包里  交易一个装?{等<br>if(pItemProperty->bCanSaveLog)<br>{<br>//sendmessagetologdb<br>}  <br><br>q样你就记录些珍늉品就?br><br>按我的分c?我一般将代理分ؓ 账号代理  角色代理  游戏代理  日志代理  q维控制器代?br><br>q里不一个个讲了 攑ֈ后面说架构的时候再说每个代理需要做的事?nbsp;<br>一个宗旨是 分的l?每一个得压力小  但是要保证不要出现数据互交叉<br><br>也见q某些项?是没有具体的数据操作代理的,直接是在服务器里直接操作Q我个h认ؓ啊,能新开q程 异步?开Q没必要l老板省钱Q全部都压一GAME?扛不住啊Q而且如果是分布式的话Q你肯定得有一个统一的数据出口啊Q不然的话。。我没想q会怎样Q数据不l一Q数据库死锁?<br><br>三:q维模块<br>     q维分开是q营和维护。?nbsp; 因ؓ他们是走的同一套架构,所以这里就放一h?br>     首先说明他们的生原因:不可能每一ơ服务器更新 或者再监控服务?l护q程 或者是提取某某文g日志  都是一个个q程g服务器吧 那样的话 l护者工作效率就太低?br>     GM也不可能每一个服务器都登陆进个客L开着吧。。所以这个模块就产生了,对维护者是要实C们的q程操作Q对GM是要实现他们的线下操作?br>    工具功能Q可监控 开?nbsp; 关闭服务?可主动推送更新文?nbsp;更新脚本 <br>                       GM可线下操作基本命令,监控聊天Q赔偿物品,发送游戏邮件等{?br>                       开发者可d提取调试日志记录<br>                       帐的可d开后台查看q营日志记录计算ARPU|查看在线记录Q等{等{?br>我现在是不推荐GM做线上操作的呢,如同之前传奇那LQ都是在聊天框里输入GM命oQ我个h认ؓ内部操作q是走后门的?不要和玩家一起从前门CQ注意的是这一块在中心控制器代理这里一定要做好监控Q和操作记录Q验证,来保证操作的安全性,防止q规操作。力囑ְ工具客户端绑定到某一台机器,比如可在q维登陆工具时?发送̎?密码  MACKEY  IP  子网掩码   某一个CODE {等在控制中心验?成功才可d控制中心Q工具客L才可操作?br>     q个模块主要注意的就是安全性,操作的方便,和日志模块结合在一P日志记录 分类 挖掘 良好 <br><br><br>    具体架构的后面再?br>    毕竟q个是谈Q所以没有什么实际性的代码内容Q就是让不了解的朋友能够了解q是怎样的一个架构一个工作流E?br>    看了留言?Q这博客Q不同IPQ点了就加一阅读Q没意思啊Q我不知道到底有没有价值l啊Q?br><br>    我是力图用最的语言来表现这些玩意是怎么会事情,高深的我也不懂了Q扁我吧Q。觉得没啥意思的也留个言拍下砖头啊,觉得有意思的留个a让我高兴下,主要是没打草E直接写的就发了Q遗?不清不楚肯定q是有的 .<br><br>本文介绍一下一个应用的游戏服务器的架构和演?br>      游戏服务器的作用在于满在线玩家的需求,实现账号的验证,登陆Q玩家在游戏世界的一pd逻辑操作和验证。在此基上,一个好的架构,可以提升效率Q在实现逻辑需求的情况下达到百万的同时在U数也不是不可能?br>      我们先从最搓的最单的l构看v<br>      <br>      CLIENT ----------  SERVER   ---------   DBSYSTEM<br><br>      是一个很单的 C/Spȝ  同一个server同时处理登陆注册创徏角色和游戏逻辑操作的功能,。在server上直接挂接DB操作。DB可以是一个具体的数据库也可以是一个FILESYSTEM<br>      q里可以看的出来Q过于简单了Q将登陆注册创徏和具体逻辑q几个毫无关pȝ东西攄于一P严重损耗了具体逻辑操作的效率,特别是在新开服阶D,完全会因为登陆验证的操作而导致逻辑爆卡?br>      所以这里需要升U,完全不同类型在玩家一ơ游戏操作工E中只会在登陆阶D|行一ơ的操作单独分开Q单独进E解冻I。故而可成ؓ下面阶段<br>       <br>                 -  LOGINSERVER -<br>               -                                 -<br>CLIENT -                                   -  DBSYSTEM<br>               -                                -<br>                - GAMESERVER -<br><br>分ؓ两个服务器,q个我在一文章里的开头就有提到过了?br><br>我们来看下好处进Ӟ在LOGINSERVER里只执行账号验证  查询角色列表  创徏角色的操?nbsp;  而后玩家登陆qGAMESERVER  具体逻辑操作在GAMESERVER里完?br><br>玩家的一ơ登陆操?br><br>                   发送̎?nbsp;                                验证                               q回角色列表                          创徏角色<br>CLIENT---------------LOGINSERVER -----------DBSYSTEM-----------------------CLIENT ------------------<br>                                                                                                选择角色与LOGIN断链与GAMEq接 登陆<br>LOGINSERVER -------DBSYSTEM  ----------CLIENT  ------------------------------------------------------GAMESERVER<br><br>如此Q可有效的提升效率,玩家的验?nbsp;列表d 创徏 和GAME毫无关pMQ但是他的缺点Q然存?我们再l看可优化的地方<br><br>首先从数据库上来提升效率Q先说下Q从q里开始就应该是肯定的是用数据库了Q而非什么本地FILE了,Q,̎号库和游戏数据库分开Q分Mؓ两个独立的库Q?br>具体理由有两个:<br>1Q从游戏q营上来?你不可能一直是只有一个服吧? 分成多个服后 人数来多Q就不能所有服都共用一个数据库了吧Q那你这数据库也牛g<br>      所以我们这里这么干Q将 账号库独立,全游戏共用,q样是方便管理,方便理账号的全局性的信息 l济性的 比如点卡什么的Q每个服一个游戏数据库Q只记录操作你这个服的玩家信息,世界信息?br>2Q理q同将服务器拆分ؓLOGIN和GAME?br><br>现在 l构是q样?br><br>                   - LOGINSERVER-<br>                 -                               - ACCOUNTDBSYSTEM<br> CLIENT -                                                             -   <br>                 -                               - GAMEDBSYSTEM <br>                   - GAMESERVER -<br><br><br>但是Cq里?nbsp;肯定q是不够的,<br>我们先说个基本的Q在服务器里 Q你一定要记得Q数据库操作QIO操作 Q文本操作这?一定要单独q程不要和主q程搞一P你M希望你做了个什么查询还是什么操?他主U程挂v吧?但是Q试想下Q如果能单独q程肯定q是单独q程更爽一点吧Q你q能在里面做做缓存啥的,q不占服务器的资?br>    所以这里还是麻烦的 从效率上来说 臛_后台q块 q有很大提升I间。因此,我们加入 DBAGENT模块 Q单独进E,数据库操作单独分离Qƈ且可自我d某些应用的缓?br><br>对应ACCOUNTDBSYSTEM 增加 accountagent Q对?GAMEDBSYSTEM 增加 gameagent<br><br>l构如下<br><br><br>                 -LOGINSERVER-<br>               -                              - accountagent - ACCOUNTDBSYSTEM<br>CLIENT -                                                                                                   <br>               -                              - gameagent   - GAMEDBSYSTEM <br>                -GAMESERVER -<br><br>LOGINSERVER同时和accountagent和gameagentq接   gameserver也同时和q两个连?nbsp;  服务器通过agent来对对应的数据库做操?nbsp;  因ؓaccountdbsystem可能是全服共有的 Q所以accountagent也可以是全服共有?他连接所有的服务器。loginserver通过accountagent来验?nbsp;通过gameagent来查询列?创徏角色  gameserver通过gameagent来查询完整角色信息登陆进gameQƈ通知accountagent此̎号已q入游戏Q避免重复登陆。ƈ且定期保存。设|你可以比如你游戏的排行榜啊,拍卖行啊的信息放|于你自p计的gameagent的缓存中Q而避免重复查?br><br>玩家每一个对数据库的操作 server只需发送消息到agent agent来做具体操作Q而后再返回到server 再到client可。将数据操作完全的异步操作,效率有较大提升。ƈ且安全性上也得C些许保证?br><br>不是我胡说或者轻视,国内一大半游戏Q都用的上面q个l构。。。。。。。。。。。。。。。。。。。。。这个可以算是一个比较完善的产品化架构了?br><br>说到q里Q大家有没有发现一个共性。采用这cL构,游戏必然会是先选服务器再验证̎?登陆q游戏,q是因ؓ服务端采用的是LOGIN和GAME一对一得处理,也就是你是登陆的什么服务器必然是从什么服务器的LOGINq入验证Q故而他需要在客户端开启的时候就要知道需要连接的是哪个LOGIN 账号验证成功后再是哪个GAME<br>其实q里很好处理Q就在客L上做些处理就可以辑ֈ先登陆验证在选服务器。所以在配置?LOGIN不再是一对一Q后面会有优化的再说到多个LOGINQ,全局也共用一个LOGIN。玩家开启客LQ连接LOGIN。发送̎号验证。因里已l是把ACCOUNTDBSYSTEM做成全局的了Q所以是不用担心他是哪个服的Q然后返回成功,玩家客户端显C服务器列表Q这个列表还有连接信息配|再客户端就可以了)选择某一个服后,则发送查询某服角色列表的h到LOGINQ而后再返回再登陆游戏可。小调整和改变可实现先验证后选服务器了?br><br>      所以,Cq步Q服务器架构变成这个样子了<br><br><br>                  -LOGINSERVER-<br>                -                               - accountagent -ACCOUNTDBSYSTEM<br>CLIENT -                                 |--------                                           <br>                -                                |-----------<br>                 - <br>                  - GAMESERVER  - gameagent     -GAMEDBSYSTEM <br>                    -                                             |  <br>                   - GAMESERVER  -gameagent      -GAMEDBSYSTEM <br><br>全局q一个LOGIN和一个ACCOUNTAGENTq有ACCOUNTDBSYSTEM<br>每个独立服各自独立的gameagent 和gamesdbystem<br>但是LOGIN的瓶颈立马出CQ当初是一个服独立一个LOGINSERVER 现在是全服只有一个了Q毫无以为,扛不住?br><br>其实上面q个架构的不一定非得存在的Q就是随便写写,让大家更清楚一炏V?br><br>所以LOGINSERVER得配置多个了。这个地方大安择?量灉|点,可以全服单位的配|多个也可以每个服对应的配置多个LOGINSERVER。这?在开服时候,q种大面U井喷式的玩家玩家上U,可有效解册载。具体CLIENT开启后会是和哪个LOGINq接?br>q里提供两种方式。一个是配置上的 一个是E序上的<br>1Q?br>   E序上的好说 Q你把所有LOGINSERVER的连接信息都配置到客LQ让客户端开启后随机选择一个去q接。要是你开服后Q他所有玩安随机C个LOGINSERVER了,那真的算你点背。背到家?br>2Q配|上 Q?br>   通过ZDNS的负载均衡系l,DNS中ؓ一个域名配|多个IP地址。通过负蝲Q让pȝ来选择是对应到哪个IP<br><br>所以就?nbsp;    <br>                 -LOGINSERVER   -|<br><br>                 - LOGINSERVER  -|<br><br>                 -LOGINSERVER   -|<br>                -                  -accountagent -ACCOUNTDBSYSTEM<br>CLIENT -                                  |--------                                           <br>                -                                 |-----------<br>                - <br>                -GAMESERVER -gameagent   -GAMEDBSYSTEM <br>                -                                             |  <br>                -GAMESERVER - gameagent  -GAMEDBSYSTEM <br><br>或者是Q?br><br>        <br><br>        - LOGINSERVER   -             <br>         - LOGINSERVER   -   <br>         - LOGINSERVER   - <br>      ..................................上面可以是N?nbsp;                                                                            <br>        -                                -gameagent -GAMEDBSYSTEM <br>        -GAMESERVER  -<br><br>Client<br>       - LOGINSERVER   -      <br>         - LOGINSERVER   -   <br>         - LOGINSERVER   - <br>      ..................................上面可以是N?nbsp;                                                                                           <br>                                         - gameagent-GAMEDBSYSTEM <br>        - GAMESERVER  -<br><br>  accountagent    --              --- ACCOUNTDBSYSTEM 是全局?br><br>一个服对应好多个LOGINSERVER<br><br><br>因ؓLOGINSERVER使用的动态配|,故而可在登陆下U没有多大压力的情况下,x几个LOGINSERVERQ节省运l资?br><br><br>不想写了Q元旦又混了三天Q明天l吧。明天把前面的再扩展下,再说下分U的和分布的。牛逼的׃说了 <br><br> <img src ="http://www.shnenglu.com/beautykingdom/aggbug/106871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/beautykingdom/" target="_blank">chatler</a> 2010-01-31 12:10 <a href="http://www.shnenglu.com/beautykingdom/archive/2010/01/31/106871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.shamba.com.cn" target="_blank">ŷսպ91ۺһþþ</a>| <a href="http://www.jiujimenye.cn" target="_blank">պƷþþþþ</a>| <a href="http://www.ehfad.cn" target="_blank">þ㽶߿ۿ</a>| <a href="http://www.yiliaojiufen.cn" target="_blank">þ޹ŷ޾Ʒһ</a>| <a href="http://www.vrfx.cn" target="_blank">þ99Ʒþþþþ</a>| <a href="http://www.odcb.cn" target="_blank">޾Ʒþþþϼ</a>| <a href="http://www.ouseshi.cn" target="_blank">91ƷۺϾþ㽶</a>| <a href="http://www.y0ing.cn" target="_blank">þþƷƵһ</a>| <a href="http://www.qcb8.cn" target="_blank">ھƷþþþþ鶹</a>| <a href="http://www.sywanfu.cn" target="_blank">þרƷ </a>| <a href="http://www.5billion.com.cn" target="_blank">˾þþþƷ</a>| <a href="http://www.lsjtht.cn" target="_blank">þþƷ޾Ʒŷ</a>| <a href="http://www.yshome.net.cn" target="_blank">ɫþþۺ</a>| <a href="http://www.npoq.cn" target="_blank">Ʒþþþþ</a>| <a href="http://www.sxxnjy.cn" target="_blank">97þþƷ </a>| <a href="http://www.yrjiameng.cn" target="_blank">Ʒ޾þþþþ</a>| <a href="http://www.hjpz333.cn" target="_blank">þ޾Ʒվ</a>| <a href="http://www.qvella.cn" target="_blank">һþaþþƷۺҹҹ</a>| <a href="http://www.knnnb.cn" target="_blank">AVպAVþþ</a>| <a href="http://www.jrtz213.cn" target="_blank">þþѹ۳ӰԺ</a>| <a href="http://www.itiptong.cn" target="_blank">þ޾ƷƵ</a>| <a href="http://www.efineit.cn" target="_blank">þþƷ99þþ</a>| <a href="http://www.999966.com.cn" target="_blank">Ļ˾þ</a>| <a href="http://www.zzyes.cn" target="_blank">ѾþþƷ99þ</a>| <a href="http://www.rigemei.cn" target="_blank">þþƷþ˼˼</a>| <a href="http://www.wyj442.cn" target="_blank">þоƷ</a>| <a href="http://www.dfbgkp.cn" target="_blank">ŷպþþƷ</a>| <a href="http://www.6kun.cn" target="_blank">þþƷƵ</a>| <a href="http://www.cn-trip.cn" target="_blank">þûɫƵ</a>| <a href="http://www.inqh.cn" target="_blank">þݺҹҹav˳</a>| <a href="http://www.mtsjnlaliji-syj.cn" target="_blank">91ƷۺϾþþƷ</a>| <a href="http://www.jjshjlbf.cn" target="_blank">þһձɫۺϾþ</a>| <a href="http://www.logeng.cn" target="_blank">Ĺ˾Ʒþò</a>| <a href="http://www.pw823.cn" target="_blank">ҹƷþþþþӰ777</a>| <a href="http://www.51jintianfang.cn" target="_blank">ۺۺϾþ69</a>| <a href="http://www.seowiki.com.cn" target="_blank">88þþƷһëƬ </a>| <a href="http://www.semtmtw.cn" target="_blank">һþaþþƷۺ㽶</a>| <a href="http://www.f7799.cn" target="_blank">þþƷһĻ </a>| <a href="http://www.hx85.cn" target="_blank">þ99Ʒ</a>| <a href="http://www.clkj168.cn" target="_blank">ó˾þAvѸ</a>| <a href="http://www.020rj.cn" target="_blank">˾þþƷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>