过程与不确定因素
帐号登录是一个跨多个服务进程的一段持续的交互过程。
如IO游戏,会涉及到的游戏服务器有:
- 登录服务器
- 数据库服务器
- 缓存服务器
- 中心服务器(很多别名,如CenterServer、WorldServer;也可能是redis、etcd之类的)
- 游戏服务器(很多别名,如RoomServer、CellServer、GameServer)
- 网关服务器
在这个过程中,可能会有很多意外、或者恶意行为:
- 同个帐号在多个终端登录
- 同个帐号登录报文被持续多次发送
- 登录过程中,某服务进程失效
- 登录过程中,终端连接已断开
因此不严谨的登录逻辑会出各种问题。
这里提供了3种方法来确保登录过程健壮:
- 多段登录
- 服务无状态化
- 时序图推导
多段登录
显然,登录过程越长、涉及的服务进程越多,那么不确定因素风险越大。
仔细观察这些服务进程,如果服务器架构合理,那么通常可以把服务器架构按功能区块化(俗称“微服化”)。
那么根据“分而治之”的原理