如何进入服务器(怎么登录本地服务器)

上一篇我们讲解了网关服务器,在这一篇中我们讲解游戏服务器第一个场景服务器《登录服务器》。在没有开发过多人同时在线的开发者来说,感觉登录服务器的 就是登录。没啥要说的,不过这只是最重要的功能。

一个健壮的登录服务器,还是需要考虑很多的。

1)服务器限流

如果玩过腾讯和网易游戏,或者大的互联网公司做的游戏,大家都会发现一个问题,你就是当天开服的,大多需要排队。作为技术来说。不就是一个登录吗,为啥要排队。其实深挖根本原因就是服务器的资源是有上限的。如果需要满足很多的人同时在线,那服务器的成本也会很高。游戏在刚开服的阶段,因为宣传会有大量的玩家进来,很多都是进来玩一玩 看看是不是我喜欢的类型,如果不是就直接不玩了。前期如果为了所有玩家能进来 需要准备大量的服务器资源。显然是不合理的。当登录服务器接收到登录请求的时候,把数据扔给一个全局队列,同时返回队列的大小,然后返还给客户端,然客户端知道前面排了多少人,这样一个简单的限流就完成了。同时服务器可以定一个时间给客户端推送还有多少人在你前面。

当我们有一个全局的队列以后就很容易限流了,我们只用根据服务器压力测试的结果,看看服务器可以承载多少人,当到达这个上限以后就,就不从队列里面取出数据,一直等到服务器真的有人走了,在从队列里面取出数据,继续执行这个逻辑。一直到队列为空位置。通过这步骤大家可以看出来整个步骤都是异步的,没错这样设计可以提高程序的负载能力。

2)顶号

在经过上面的步骤以后,如果验证用户名和密码正确,这个时候就会得到一个全局令牌 。然后发送给一个全局的状态服务器,看看是否已经有一个同样的登录和链接了。如果有,就踢掉原来的登录,加入新的登录状态。

然后服务器在通过网关去的别的场景服务的时候需要发送此令牌来进行校验,来保证一个玩家的合法性。

3)第三方登录

随着互联网的发展,越来越多的登录方式不再是原来的注册账号那样的流程。为了方便用户进入游戏,都会接入第三方登录方式。第三方登录模式说白了就是 一个用户ID 可以有多种登录方式。在建立数据库表的时候 需要把账号单独建立一个表,来实现多个账号,对应一个用户,下面我贴一下我们的表结构设计

之所以要拿出来,就是希望大家在考虑之初要设计进去,防止后面因为业务大改这块代码。以上仅供参考

4)缓存

登录服务器设计很重要的一点就是考虑缓存,因为查询数据库是耗时的操作。所以我们要增加缓存,当用户登录的时候需要先去缓存里面查看是否有数据,如果没有就去数据库查询,给缓存设置过期时间。当用户长时间不上线的时候就释放掉,防止因为缓存导致内存爆掉。这个推荐大家看一下redis。

上面是我自己理解的一些重点,可能有不对的地方,但是都是经过我实践的。在具体的游戏中业务可能还不一样,所以需要根据自己的业务具体的调整.如果有疑问欢迎私信或者留言。

(0)
上一篇 2022年4月30日
下一篇 2022年4月30日

相关推荐