您好,欢迎访问利联科技官网!    24小时服务热线:400-161-0880    我们有最适合您的产品和最好的服务。登录  /  注册  /  旧平台入口

美国游戏服务器需要解决的技术点

 

美国游戏服务器因为开发成本较低的特点正在逐渐成为很多游戏厂商选择的服务器之一,但使用这种服务器开发游戏

的时候有一些需要解决的技术点让我们注意,其中之一就是数据共享。因为游戏一般不分区不分服,我们在设计服务

器的时候,是按照世界服的思想去设计,即服务器是一个n多台物理机的集群。当用户登陆服务器,创建房间时,可

能根据负载均衡算法,它可以在任何一台服务器上面。所以,不管用户登陆到哪一台服务器上面了,都可以获得自己

的数据。我们可以使用redis来做数据共享。


使用美国游戏服务器登陆游戏时,客户端必须首先向登陆的web服务器请求登陆信息,登陆成功之后,返回登陆的to

ken,为了适应大规模的web请求和登陆服务的稳定,可以使用nginx做负载均衡。登陆成功之后,请求负载均衡服务器,

获取一台连接的业务服务器。这个负载均衡服务器可以和登陆web在一个进程中,也可以独立出来。拿到登陆成功的

token和需要连接的业务服务器的ip和端口之后,再去连接业务服务器。连接成功之后,要使用token到登陆服务器去

验证,这个用户是否登陆了。同一个房间的用户要连接到同一台物理服务器上面。在上面已经说过,redis用来做共享

缓存,mysql做持久化存储,数据库持久化服务器,统一做数据入库操作。


使用美国游戏服务器如何让玩家进入房间?在同一局游戏中,我们要求所有人都在同一个房间中,我们可以规定在同

一个房间中的用户,必须登陆到同一台物理服务器上面。在创建房间完成之后,其他人根据房间号查找房间的时候,

可以根据房间号,获取这个房间所在的服务器ip和端口,判断一个当前用户登陆的服务器ip与房间所在的服务器ip是

否相同,如果相同,就不做切换,如果不一样,客户端就使用ip和端口,连接到房间所在的服务器上面。


使用美国游戏服务器怎么保证房间操作的顺序性?创建房间成功之后,接下来的操作都要保证它的顺序性,所以房间

需要有一个它自己的消息个队列。我们可以把每个房间到达服务器的消息封装为一个任务,把这个任务放到消息队列

中,然后有一个任务执行者去按顺序执行这些任务。所以服务器要满足随着用户量的增加而扩展的需要。即在同一局

游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息。每个房间的操作必须是顺序性,这个特性

类似与一般游戏的回合制,每个玩家的操作都是有顺序性的。


您可能还会对下面的文章感兴趣: