如果我们刚开始新游戏项目的服务器开发,会遇到服务器状态选择问题,游戏项目是用有状态服务器还是无状态服务器?
是什么?服务器状态简单来说客户端的多次请求具有上下文关系。比如客户端登录后,后续请求其他业务时客户端不用再发玩家信息。
从服务器状态角度来说,服务器分为有状态服务器和无状态服务器。
有状态服务器就是在服务器端保存有关客户端的相关信息,方便该玩家的后续请求不用再发玩家的基础请求信息。比如玩家的基础信息(角色id,区服id)。在服务端保存客户端的一些信息,可以减少客户端传输的数据量。主要应用场景:游戏服务器。
无状态服务器就是服务器不保存客户端的相关信息,客户端每次请求都需要带基础请求信息,比如玩家的角色id。客户端就可以将请求发送到任意一台服务器上,实现水平扩展。主要应用场景:web服务器。
怎么使用?服务器是根据session来识别客户端的。
- 对于有状态服务器来说,我们可以在服务端保存客户端session,服务端根据客户端session在缓存或者内存处拿到客户端基础信息。
- 对于无状态服务器来说,不需要再服务端保存任何信息,客户端每次请求都是独立的。
游戏服务器最希望实现的功能就是服务器能够平滑升级,实现不停机维护。
服务器是否有状态根本在于是否会保存session,我们可以在公共存储的地方保存session,比如在redis中保存。在这种情况下,服务器不保存客户端状态,变成无状态服务器,可以做到水平扩展。



