MMO大型多人在线游戏服务器架构简述

mmo服务器架构总体来说相对比较复杂,由多组服务器进程组成。而这些服务器进程大致分为两类,一类是平台服,另一类是普通服。

一、平台服

平台服务器一般都用于处理全局相关功能,涉及玩家登陆,角色唯一性认证,跨区,全区排行榜等。主要包括以下几种:

  • flserver: 登陆服务器进程,玩家登陆时首先连接flserver服务器。

  • dbaccessserver: 数据库访问中间服务器, flserver会连这个服

  • roleregserver: 角色唯一性验证服务器,验证角色名是否重复。

  • rolechangeserver: 转区服务器进程,玩家跨区、旅游等需要通过此服务器进行中转,一般来说。

  • globalserver: 全局服务器,处理所有区服的全局信息,比如处理所有区服的主播排名等。

  • idipserver: 一个管理服务器,用来给玩家发邮件,补偿等特殊操作。

二、普通服

普通服一般都是涉及单个区服相关的,和其他区服往往是独立开来的,一般包括:

  • gatewayserver:网关服务器进程, 与flserver服务器断开连接后,连接gatewayserver,gatewayserver相当于游戏客户端与mmo服务器之间交换数据的桥梁,游戏客户端与mmo服务器中其他服务器进程交互都是通过gatewayserver进行转发的。网关服务器收到玩家的消息后,根据消息类型转发给对应的服务器进程,同理各个服务器进程也是先把消息发给网关服务器,然后再由网关服务器发给玩家。

  • recordserver:存储服务器进程, 通过该服务器进程进行数据持久化操作,比如把数据存到mysql数据库。

  • sceneserver:场景服务器进程, mmo服务器中主要的服务器进程,承担了大量的服务器端逻辑操作,比如玩家在游戏地图中移动,跳转地图,玩家PK,与npc的交互,怪物的攻击,移动等等。在场景服务器进程中存在一个场景玩家对象,该玩家对象身上又存了很多与玩家相关的数据与操作,比如装备及其装备的打造,升级;坐骑及其参战,休息;图鉴及其激活,升级等。

  • sessionserver:会话服务器进程, 为了使mmo游戏能够支持更多玩家同时在线,sceneserver服务器进程一般有多组,从而分担单个sceneserver服务器所带来的压力。多个sceneserver服务器虽然能够支持更多玩家同时在线,但同时也使sceneserver服务器进程变得更加复杂,由此催生出了sessionserver,简单来说,sessionserver就是用来管理sceneserver服务器的。

  • functionserver:功能服务器进程, 由于存在多个sceneserver服务器,那么在不同的sceneserver服务器进程中,数据可能会不一致或者说想要在不同的scenesever中做到数据一致实现起来会比较复杂,比如说排行榜功能,假如想统计全服所有玩家的等级排名,只需要把各个sceneserver上玩家等级数据发到functionserver上,在functionserver上统一排名即可,倘若放在sceneserver上做排名就会变得复杂很多。所以functionserver一般用来处理全局的数据或者全局相关功能。

  • voiceserver:声音相关服务器进程, 处理声音相关功能。

  • mailserver:邮件相关服务器进程, 处理邮件相关功能。

  • imageserver:完成图像相关验证的服务器进程。

  • superserver:管理服务器进程, 用来管理上述所有普通服务器,同时也是处理对外区服相关操作的桥梁,一般需要连接rolechangeserver,从而完成转区操作。

上述服务器进程是mmo服务器的基本框架,很多mmo游戏服务器都是采用这种架构。

你可能感兴趣的:(游戏开发,服务器,游戏,运维)