服务器组架构(研发)

之前一段时间公司派我去其他地方出差,  由于网络不方便没有更新博客.

这篇阐述一下服务器端的总体架构.

总体架构:  
          一个游戏世界(game)由以下进程组成  Center*1  +  DB*1 + World*1 + Bridge*1 + Map*n + Gate*n 组成.
           一个大区由n个游戏世界组成(game), 每个区有一个 Login.

           game 内部:
                     Center 负责接收其他进程的连接,  并为之分配id, 并指导它们相互连接. 
                     DB负责game内部的游戏数据存储策略,需要的数据向其申请读取, 存储等.
                     Map是地图服务器, 一个游戏有多个用于增加负载. 每个Map管理一张地图或一张地图的一部分区域.
                     World负责game内部逻辑总管理, 管理所有Map, 以及公共的资源, 比如 队伍, 工会等.
                     Gate负责接受Client的连接, 并为之提供稳定的数据传输.  
                     Bridge 桥接服务器, 用于管理地图中的跨进程问题.  最常见的是: 一张地图由2个以上的Map管理, 地图上的玩家,怪物数据之
间做无缝隙处理. 
 
          大区内:
                     一个大区有一个Login, 每个game 中的Center 连接这个Login, 并把此game中的Gate信息传送到 Login.

           游戏连接情况:
                     game 内其他进程都连接 Center, Center给他们分配id, 并指导其相互连接. 连接情况如下:
                     Center->Login,
                     DB->Center,
                     World->Center, World->DB,
                     Bridge->Center,
                     Map->Center, Map->World, Map->DB,Map->Bridge
                     Gate->Center, Gate->DB,Gate->Map(每一个Gate都需要连接所有的Map),

           游戏登录:
                     Client->Login , Client先选择要连接的大区,  再连接到此大区的Login, 在Login上选择要连接的game, Login根据此区内的

                    Gate的负载情况给出Client需要连接的Gate信息.
                     Clinet->Gate, 在Gate实现登录(Gate访问DB数据), 并根据地图数据进入Map(在Map上生成实例).逻辑实际是在Map上运行.


服务器进程内架构:
           一个进程有多个Block, 继承自LogicBase, 分别实现不同的功能模块, 分为: 连接模块, 管理模块, 逻辑模块.连接模块实现连接管理, 
           一个进程有一个Server, 继承自 ServerBase. Server 管理多个Block.

下一篇我将阐述 进程内 的架构以及功能.



你可能感兴趣的:(服务器组架构(研发))