游戏平台,这里指的是运营多款游戏的用户平台,类似腾讯,盛大。大多情况下游戏平台有多处地方的账号登录,如网站登录,游戏登录,应用登录等,而且在这些地方使用的账号都是通用的。所以,这就要求游戏平台必须维护账号的唯一性与一致性。
通常的作法是每个游戏都有自己的账号库,各自维护自己的账号库。当网站有用户注册或修改时,就会通知所有的游戏服务器进行更新。如下图:
但是我们很快发现其中不合理的地方:账号注册或者修改时,更新要同步到多个账号库,这就提高了账号出错的风险,而且也加大了游戏平台账号注册和账号修改的压力。随着游戏的增加,这种模式的弊端越来越明显,不适合游戏平台的长远发展。
为此,我在这里提出了账号认证网关的概念。
账号认证网关,指的是对外提供账号认证服务的应用接口。本质上是一个进程,基于某种特定协议(如HTTP协议),接收账号认证请求,通过查询账号数据库验证账号是否正确,然后返回验证结果。如下图:
这样,游戏平台只要维护一个账号库,所有登录都是通过账号认证网关来实现的。
以上关于游戏账号登录的架构,对于很多的游戏平台已经满足需求了。
但这样的架构还是存在问题,玩家账号数据都共享给了所有游戏,而且平台账号安全也依赖于所有游戏安全机制的实现。所以以上的架构不适合平台的长远发展。
为此,我也细化了这个结构,如下图:
对于这个结构,游戏平台需要维护账号认证网关和登录模块,就是上图红色和蓝色部分。
这样,无论是网页,游戏端,手机游戏及应用等等,他们不需要关心登录模块的实现,只要知道如何嵌入模块调用即可。
当然,这个只是构想。实现是一步一步的事,而不是一蹴而就。一开始就把事情设想得很完美,结果反而却做不好。
拓展阅读: