服务器的架构,根据游戏类型不同大多有:账号服务器、全局服务器、网关服务器、场景服务器、中心服务器、存储服务器,配合其他的服务器(比如日志服,监控服等)。传统的游戏是单服模式,现在也有很多的是分布式模式。
单服模式:就是一组服务器为一个服,与其服务器之间不互通的。比如传统的网游(魔兽世界),客户端看到的服务器列表里每个服都是一组单独的服务器,之间数据不共享。
分布式模式:理论上可以无限扩容,可能有万人同服的情况。但实际上是有上限的。这个要根据服务器的逻辑设计,和硬件决定的。分布式的思想就是服务只是一个概念。一个服务可以是一个进程分布在不同的硬件服务器上,也可以分布在相同的硬件上,也可以多个服务在一个进程内部。服务的业务逻辑可能是一个场景,也可能是一个玩家的业务逻辑,都可以的。这样可以无限扩展,业务逻辑之间的通信只要找到对应的服务逻辑地址就行了。
每一个服务器的作用:
账号服: 提供账号注册登录验证流程。这个一般多线程,因为业务逻辑没有交互,注册账号,验证账号,以回调方式返回信息就好了。(可能多组服务器器共享一个账号服)
网关服务器:这个是所有客户端连接的服务器,客户端不会直接连接到业务处理服务器,而是连接到网关,由网关转发消息到相应的业务处理服务器。提供路由作用,消息的加密解密也在这一层处理。(每组服务器可能有多个)
全局服务器:这个根据不同的游戏设计不一样,全局数据和业务处理在这个服务器上处理。比如棋牌游戏的话,玩家不在游戏的时候其他的商城业务可能就在这一层处理了,如果是MMO游戏的话公会服务,或者场景管理服务可以放在这一层处理。(单点,但是现在为了防止宕机也有做主从的)