首页 > 专用服务器 > 棋牌服务器

服务器_棋牌游戏服务器架构设计

棋牌服务器 棋牌服务器 2020-12-18 13:42:31 0 服务器 房间

棋牌游戏服务器架构设计

一,棋牌类服务器的特点

1,棋牌类不分区不分服

一般来说,棋牌游戏都是不分区不分服的。所以棋牌类服务器要满足随着用户量的增加而扩展的需要。

2,房间模式

即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息。

3,每个房间的操作必须是顺序性

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

二,需要解决的技术点

1,数据共享

因为棋牌类游戏不分区不分服,我们在设计服务器的时候,是按世界服的思想去设计,即服务器是一个n多台物理机的集群。当用户登陆服务器,创建房间时,可能根据负载均衡算法,它可以在任何一台服务器上面。所以,不管用户登陆到哪一台服务器上面了,都可以获得自己的数据。我们可以使用redis来做数据共享。

2,如何进入房间

在同一局游戏中,我们要求所有人都在同一个房间中,我们可以规定在同一个房间中的用户,必须登陆到同一台物理服务器上面。在创建房间完成之后,其他人根据房间号查找房间的时候,可以根据房间号,获取这个房间所在的服务器ip和端口,判断一个当前用户登陆的服务器ip与房间所在的服务器ip是否相同,如果相同,就不做切换,如果不一样,客户端就使用ip和端口,连接到房间所在的服务器上面。

3,保证房间操作的顺序性

创建房间成功之后,接下来的操作都要保证它的顺序性,所以房间需要有一个它自己的消息个队列。我们可以把每个房间到达服务器的消息封装为一个任务,把这个任务放到消息队列中,然后有一个任务执行者去按顺序执行这些任务。

三,棋牌游戏服务器系统架构

1,功能设计

a,登陆

一般都是需要接第三方登陆,登陆这一块是http操作,我们统一提供一个web服务,用来做登陆验证。因为在登陆时,调用第三方的http服务,这个过程可能很慢,如果放在逻辑服务器的话,可能会卡业务逻辑任务。因为可能不同的玩家业务请求可能同在一个线程中,如果有任务卡了,那么这个任务以后新来的请求请会卡住,导致消息延迟。

b,获取游戏公告,也放在web服务中。公告一般是游戏登陆的时候向服务器获取一次。把它放在web服务器中,与业务逻辑分离的好处是,当业务逻辑服务器维护或更新的时候,不影响用户的登陆,和获取公告,这样用户体验会好一些。

c,创建用户唯一的id,因为棋牌类游戏服务器是世界服,无分区,所以用户的id必须是全局唯一的。可以利用redis的incr方法,原子的递增,如果不想被别人根据userid的递增推算出有多少注册用户,递增的梯度可以随机,比如每次递增的值从1到1024中随机一个。

d,创建房间,当房间主创建房间时,房间的id需要在任何台服务器上可以查询到,所以创建房间成功后,房间id要存储在共享内存redis中,每个房间id对应一个房间所在的ip地址或服务器id.这样,当有用户要进入房间,在查询房间id时,可能判断这个房间是否和自己登陆的游戏服务器相同。

e,查找加入房间

根据房间id查询房间,查找到房间后,获取房间所在的ip地址或服务器id,如果发现和自己所登陆的服务器一样,直接可以加入房间。如果不一样,把这个房间所在的ip和端口返回给客户端,让客户端重新与房间所在的服务器建立连接,使用登陆时的token验证用户。

f,游戏脚本调用

在验证游戏是否合法时,客户端与服务器都要验证,验证的算法是一样的,所以可以使用脚本来写,写一份脚本,在服务器与客户端中同时使用。可以使用lua。同一个算法使用同一个脚本 ,这样在开发新的同类型棋牌游戏时,只需要替换一下这个脚本就行了,不用再重复开发。

3,后台管理系统

这个一般是根据运营需求开发的,每个公司不一样。不过有一点,后台管理系统可能要和游戏服务器通信,这种通信方式最好是采用redis的订阅/发布机制。这样可以把某个消息事件同时发送到所有的业务服务器上面。根据用户所在的服务器进行处理。

4,玩家同屏

玩家同屏是棋牌游戏中的一个重点,对于做过那些大型的arpg,或mmo游戏的程序员来说,这并不是什么难事。因为同屏就是服务器对客户端的消息进行转发。一个房间四个人,一个人出的牌或操作能被其他三个人同时看到。

因为棋牌游戏的同步数据量比较小。一般常见的同步方式有两种:

a,客户端主动拉取。

客户端定时主动向服务器请求一个用户的消息队列,当一个玩家有操作需要同步到其他玩家时,在服务器端先把这个消息放到这个用户的消息队列中。等待客户端的拉取操作。这种方式的好处是,不需要考虑网络闪断或网络不好的情况,信息都是同步获取的。缺点是,定时拉取的时间间隔很短,可能不到一秒就会拉取一次。

b,服务器主动推送

当一个用户出牌的消息需要同步给其他玩家时,服务器会获得这个玩家与服务器建立的socket连接,然后服务器使用socket 主动向客户端发送消息。

这种方式要考虑网络闪断,消息丢失的问题。因为服务器推送的消息,客户端有可能会收不到。所以客户端需要根据心跳来判断网络是否有断开过,如果有断开,需要重新从服务器拉取整个房间状态的消息。或者根据服务器发送的消息号,如果客户端发现接收到的服务器消息号有跳号的,比如应该接收10,却收到了12,说明中间有消息丢失,需要重新拉取整个房间的状态信息。

这种方式的缺点是,开发复杂,需要考虑一些网络问题。优点是,只有在有消息的时候才会推送,没有的话不推送,不占用带宽等系统资源,可以增加用户同时在线量,也就是增加了服务器的承载量。

5,数据同步和持久化

a,由于棋牌类的游戏数据少,计算量也小,所以完全可以不使用内存缓存,而直接使用redis共享内存,用户的所有数据都缓存在redis中。更新也同步更新到redis中,这样不管一个用户登陆哪一台业务服务器,都能获得自己的最新数据。

b,更新数据库,由于数据第一缓存是redis,所以活跃的用户数据都是可以从redis中直接获得的,而不用查询数据库,所以数据库的更新可以采取异步更新,而不会产会数据的延迟。需要注意的一点是,数据的异步更新必须保证是有顺序的。那么这就会产生一个问题,怎么保证用户的更新不会乱呢?

c,如何保证更新的顺序性

因为我们的业务服务器是多个的,用户可能连接其中的任何一个,如果说登陆的是服务器A,加入的房间在服务器B上,那么连接就会切换。为了保证数据更新的顺序,我们可以做一个数据库持久化服务,把需要更新数据库的任务实时发送到这台服务器上,由数据库持久化服务执行对数据库的更新。这样不管用户连接的哪台业务服务器,它的更新都是有顺序保证的。

d,一种快速简单的方法

由于棋牌类的业务少,数据更新少,所以查询可以有redis缓存,减少数据库查询的压力,而更新实行实时更新到数据库,前期不需要开发数据库持久化服务。等用户积累到一定程序之后,发现更新数据库比较慢的时候,再单独做一个数据库持久化服务。

四,棋牌游戏服务器架构

1,登陆时,客户端首先向登陆的web服务器请求登陆信息,登陆成功之后,返回登陆的token,为了适应大规模的web请求和登陆服务的稳定,可以使用nginx做负载均衡。

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

3,拿到登陆成功的token和需要连接的业务服务器的ip和端口之后,再去连接业务服务器。连接成功之后,要使用token到登陆服务器去验证,这个用户是否登陆了。

4,同一个房间的用户要连接到同一台物理服务器上面。在上面已经说过了。

5,redis用来做共享缓存。

6,mysql做持久化存储。

7,数据库持久化服务器,统一做数据入库操作。

五,关于网关的问题

1,网关的作用

a,转发消息包

b,业务的负载均衡,比如A业务由服务器a处理,B业务由服务器b处理,由网关进行转发。

c,维护与客户端的连接

d,带宽的整合,一般的云服务都是按购买的服务器计算带宽的。通过一台服务器转发消息,可以只购买一个大带宽就可以了。以节约成本。

2,棋牌类游戏需要网关吗?

我认为不太需要,因为棋牌类游戏业务比较单一,做的最多的就是消息同屏转发。最多是再有一些任务或活动,这些由一台服务器直接处理完全可以搞定。而且开发网关也是一个复杂的工作,没必要在这个上面花太多的时间。

[选择香港服务器提供商是应注意哪几点问题]

很多企业在准备开展自己网上业务时,往往需要使用到服务器。而在服务器相关业务当中,香港服务器租用又是比较受欢迎的,除去不用备案以外的原因,网络南北互通也是主要原因之一。而打开搜索引擎搜索时,会有各种各样的香港服务器提供商出现,如何去选择?

1、香港idc供应商是否正规

首先给你提供香港服务器租用的IDC供应商是否正规,查看他们是否具有行业经营资质,现在idc行业比较混乱,这点是很重要的。

2、在香港服务器配置上不要追求过高

配置可能是很多人追求的一个标准,但是配置越高价格就越贵,而越贵的东西,它的配置升级的标准也就越高。对于用户来说,在选择的第一步就是对自己的需求做出一个全面性的分析,服务器的访问速度在什么速度上就足够,数据量是否需要4核的cpu才能正常运行,在网站的流量是多少,需要多少带宽才足够等,在综合考虑后就对香港服务器做出一个筛选。提供的香港服务器除了价格合适之外,还可以根据需求对香港服务进行定制,在性能和价格上都能符合自己的标准。

3、在选择香港服务器的时候要货比三家

在市面上这些服务器其实都会有各自的特点,在进行香港服务器选择时,要尽量在网上多寻找几家海外服务商的信息,然后根据香港服务器租用的基本配置参数,价格,访问速度等记录下来,然后进行全面的比较,特别是香港服务器,所提供的性能配置上或者在服务口碑上存在着一定的差异,因而在香港服务器的选择上要以比较为主,切记不要盲目信广告。

4、最后选择有信誉的idc服务商

①、网络资源—网络资源是选择IDC服务最重要的因素之一。他的好坏直接决定用户网络质量。用户在选择IDC时应注意选择带宽充足,规模较大的IDC厂商。

②、硬件设施—硬件设施主要包括专业设施管理和网络连接可靠性,专业设施管理方面主要考虑的因素有机房建设、面积、安全监控、电力供应、防灾害能力等。网络连接可靠性方面主要关心的有带宽的容量有多大、与各骨干网的高速连通能力、是否具备冗余链路等

③、服务品质—在选择IDC时,有些人往往只注重价格,而忽略性价比和服务与信誉等其他因素,这是不对的,没有最好的IDC只有最适合您的IDC。IDC更确切的说不是一项产品,而是一项服务,毕竟您所花的钱不是一次把产品拿回家,而是要把机器放在对方的机器房里让对方照顾。

5、不要忽略售后服务的重要

香港服务器租用不同其他购买型的商品,它对售后服务的要求比较高,特别是在香港服务器出现故障时,服务商对服务器故障的处理能力更为重要。

虽然香港服务器在出现故障出现问题的几率比较低也有很好的安全防御标准,但是如果香港服务器出现问题时,就只能依靠服务商对故障进行处理。

这时我们就要对商家就需要做出一个正确的选择了,如果我们选择服务器的商家是中间商,在价格上不但会昂贵一些,而且在对故障的处理能力上,更可能会存在着一定的停滞,那造成的损失就更为严重。

在香港服务器的选择上,性价比是挑选的标准,但是对香港服务器租用的选择来说,我们除了对价格配置有一定的参考之外,对海外服务商的选择就更为重要,以上就是对如何租用到价格实惠的香港服务器的一些介绍,如果用户对香港服务器有需求,可以联系的客服人员。

香港代理服务器_香港服务器一样吗

随着国际贸易的发展越来越多的人选择香港服务器或者香港代理服务器。那么香港服务器和香港代理服务器之间有区别吗?选择香港服务器的时候又该怎么办呢?这些问题,优质服务器租用托管小编来给大家分析。

首先,优质服务器租用托管小编要承认,香港服务器就是代理服务器。

其实从某种意义上来说,香港服务器也算是一种代理服务器,因为我们很多时候也是通过连接香港服务器来访问国际互联网,代理就是允许一个网络终端通过这个服务和另一个网络终端进行非直接的连接,所以从这种概念上来看,香港服务器也可以说是一种代理服务器。一般我们说提供代理服务的电脑系统或者其他类型的网络终端就被称为代理服务器,代理服务器的功能也就是代理网络用户获取信息,所以香港服务器也算是代理服务器了。

其次,香港代理服务器该怎么选,看以下这几点。

1.香港代理服务器的安全稳定性

优质的香港服务器必定是在一个稳定而且软硬件先进的机房,机房的配置决定了主机硬件的配置。因此,要想网站能够安全、稳定的运行,一定要选择知名顶级的机房。此外,租用防攻击服务器也并不一定保证百分百安全,所以还要看服务商是否提供数据备份服务,这点非常重要。

2.香港代理服务器的访问速度

服务器的访问速度是非常重要的,在购买租赁都是需要考虑的,对于租用香港服务器来说,需要先 ping下主机的速度,或测试下载速度。正常情况下,一般只要选择知名香港机房的主机,ping值均在50ms左右。当然ping值也不能完全代表速度,但是ping值过高的话,就要慎重选择了。

3.信誉和售后服务

信誉是选择香港服务器租用时最重要的,售后服务是解决服务器在运行过程中出现异常能不能快速解决问题的关键,服务器租用到哪地方都会出异常,这个谁也保证不了100%的运行正常,但是出异常后解决问题效率才是用户关注的。因此,选择一个售后技术服务好主机商是至关重要的,这样能在第一时间内解决服务器租用所出现的问题。

以上则是香港服务器的相关问题。以后如果大家要找香港代理服务器,直接选中一家服务商去买香港服务器就行了,在挑选的时候,着重看香港服务器的硬件配置、安全稳定性、速度快慢以及服务商的售后这些,综合起来考虑,那么挑选出来的香港服务器一定不会太差劲的。

版权声明

本文内容由互联网用户自发贡献,版权归用户所有,本站不为本文内容承担相关法律责任。如有侵犯您的合法权利,请联系本站进行删除。

留言与评论(共有 条评论)

   
验证码:

标签列表

09主机网

统计代码 | 京ICP2194458-1号

Powered By 09主机网

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯