今天给大家分享一下腾讯游戏《轩辕传奇》的服务器架构,讲服务器架构如果只是得一个结果,把架构示意图展示一下,这种没有什么意义,今天我想从一个每个人都会写的最简单的架构模型,如何一步一步的演变成《轩辕传奇》分区分世界的架构。
功能扩展性切分与运维扩展性切分
最简单的游戏服务器,一个进程搞定所有的功能,比如支持500人同时在线,开一个服A对应的玩家称ClientA, Server一个进程,架构如下: ClientA------>Server。如果再开第二个服B,如何处理?
方案1: Server 一个进程同时支持两个服的玩家同时游戏,ClientA/B---->ServerA/B,这样的好处就是跨服通讯非常的方便,在一个进程里面,缺点就是ClientA服的玩家引起的宕机会影响B服的玩家。同一个进程来跑A区,B区,无法发挥服务器的多核优势。那么就会演变成方案2。
方案2:A服玩家由ServerA进程来提供服务,B服玩家由ServerB进程来提供服务,他们部署到一台机器上。这样的相比方案1的优点就是一台机器上实现了扩容,缺点仍然很明显就是如果物理机器坏了,两个服的玩家都不能正常的游戏。
ClientA------>ServerA
ClientB------>ServerB (ServerA,ServerB部署到一台机器上)
再接着演变和拆分,得到方案3。
方案3: 我们把不同的服放到不同的物理机器上,这样不同的服就真正的独立起来。
ClientA------>ServerA
ClientB------>ServerB (ServerA