首先从代码层面说一下,为什么要将登录逻辑和游戏逻辑分开。
一、解耦
我们先了解一下登录流程
1.客户端通过SDK进行注册、登录,然后向登录服务器发送登录请求;
2.登录服务器收到请求后,通过SDK进行登录token的验证,验证成功则通知游戏逻辑服;
3.游戏逻辑服进行登录二次验证:激活码、黑白名单、人数上限等,最终通知客户端可以正常登录。
在整个流程中,可以看到登录服务器和游戏服务器的交互其实很简单,拆开后,加少量协议就可以解决。
二、代码复用
一个工作室内部可能会有多个项目都在开发阶段,项目类型不同,但是像数据库框架、网络框架、登录充值系统这些其实都是可复用的,但游戏逻辑就不一定了。
从架构上来说。
两者的压力峰值和承载上限是不同的。
登录服务器的压力峰值大多是开服的前半个小时,没啥问题的话,登录服务器也就扛过去了。
游戏逻辑服则是不同的业务逻辑实现,对于服务器的CPU和内存的使用率都是不同的。
所以拆开部署,也是为了避免双方相互影响,让我们对于服务器的状态更加可控。
把游戏登陆逻辑单独成一个服务的优点有如下几点:
1.登陆入口唯一.:游戏如果不是自己运营,则需要上其他平台。每个平台只能有一个登陆服务器,但是游戏逻辑服务器要跟着玩家数量的增加而增加。
2.方便扩展:游戏可能会在多个平台一起运营,不同的平台对登陆的处理方式可能不一样。单独把登陆部分分开的话,只要修改登陆服务的代码,然后发布就可以了,其他部分的服务器不需要做任何修改。
3.部署灵活:游戏中玩家数量较少的时候,可以将登陆服和逻辑符部署到一台物理服务器上。当玩家增多,服务器压力增大时,可以将登陆服单独部署到性能更强大的物理服务器上。
4.减少耦合:登陆服和逻辑服独立后,登陆服挂了不会影响正在游戏中的玩家。某一个逻辑服挂了也不会影响到登陆。
最后说一句,如果不是一个爆款游戏,对于登录服务器来说,一台高配服务器足以,都不需要考虑分布式架构之类的事情,而逻辑服,一直加就完事了。
Copyright © 2021-2022 hsroot.com. All Rights Reserved. 华上网络版权所有 湖南华上网络科技有限公司 湘ICP备2021013396号