Web服务器和游戏服务器在并发性方面根本性的不同的总结

avatar 2019年10月3日11:45:27 评论 125

朋友里有一位服务器大牛做过类似的总结,我征得他的同意把当时的资料分享一下。大量删节。

文章里说游戏服务器比较多,没怎么说web服务器。但是看了之后你就明白Web和游戏服务器在并发性方面根本性的不同了。

游戏服务器架构通识

· 前言

· 我们将从游戏服务器发展的简单历程出发,鸟瞰一下目前大多数的游戏服务器架构。

· 这里尽可能的避免陷入细节的技术问题,而是从技术进化的结果状态,反推原始问题是什么。希望能通过这个过程,解释清楚游戏服务器是在解决什么问题,痛点到底在哪里。

· 一、早期网游服务器。

Web服务器和游戏服务器在并发性方面根本性的不同的总结

· 蛮荒时期的游戏服务器框架我们一笔带过,那时的游戏服务器和一个小Web服务没有区别。

· 蛮荒时代的服务器只负责存储玩家账号、数据、转发场景内其他玩家的行为。很多移动、使用技能等关键逻辑在服务器上根本没有。随意就能用变速齿轮改变游戏速度。

· 从传奇的时代开始,游戏服务器就不再是简单的上传存档、下载存档、访问页面而已。游戏服务器内部出现了游戏逻辑,既能用于同步每个玩家看到的世界,又能让逻辑与客户端分离,避免早期的网络游戏那种毫无防范的逻辑体系(对外挂防御能力为0)。

· 这种架构奇怪的地方是处理网络连接数据传输的压力和逻辑处理的压力在同一个服务器上(存储模块可能也在同一个进程),就算逻辑处理压力为0,承载人数也高不到哪去。

· 二、早期游戏服务器的改进版本

· 当开发者们有了初步经验以后,新作品的开发,自然而然的过渡到了如下的形式:

Web服务器和游戏服务器在并发性方面根本性的不同的总结

· 游戏逻辑服务依然是在一台服务器上,单进程(逻辑处理本身肯定是在一个线程中,可以有子线程负责内网通信)。但是我们自然的想到,存储负载和网络连接负载可以从逻辑服上拆出来。

· 由于连接服务器本身没有时序性,很容易做分布式的(其实大部分游戏还是只用一个连接服),存储服务不要求高实时性,高峰期存盘间隔可以稍长一些,不会对游戏服造成影响。

· 三、成熟形态的服务器框架(这节是重点)

· 1、逻辑服务器的负载均摊方法一:按照功能划分多个服务器进程

Web服务器和游戏服务器在并发性方面根本性的不同的总结

· 2、逻辑服务器的负载均摊方法二:按照场景划分多个服务器进程

Web服务器和游戏服务器在并发性方面根本性的不同的总结

· 难点在逻辑的设计上,要像做手术一样把本来是一体的功能切开,并抽象出若干个API来保持联系(服务器之间是TCP连接)。

· 在分解时,要找联系相对最薄弱的环节入手,比如场景和场景之间分开、单独抽出聊天服务、组队服务、好友服务。

· 无论如何分解,最终结果只能是有限个服务。而且分解的越细,开发难度就越大。因为跨服务器逻辑是把简单的同步逻辑变成了异步Callback逻辑,而且容易出现时序问题等不易测试的问题。

· 单个场景服务几乎是无法分解的。分解单个场景难度巨大以至于出现了BigWorld引擎来专门的解决场景分割问题,后面会谈到。

· 这种成熟形态的游戏服务器已经能满足现实中99%的频繁交互类网游需求,是大型MMO端游、页游的主流形式。

· 对比Web服务器

大致只说一点:由于数据库的存在以及HTTP请求的特性,Web服务器天生就是并发的,也一直在高并发的路上越走越远。

Web服务器和游戏服务器在并发性方面根本性的不同的总结

· 附:开房间式的网络游戏

· 开房间式的网络游戏也是游戏的一个重要分支,英雄联盟、DOTA、很多手游例如皇室战争、王者荣耀等等。

· 这种游戏房间之间几乎没有交互,只有大厅内有交互,可以理解为原始形态的游戏服务器的平行扩展。

· 房间式游戏扩展难度较小,只是需要根据玩家数量动态扩展游戏房间的数量、服务器数量。很像网站的架构。

· 这种游戏架构最最适合放在云平台上,设计合理的话,它可能遇到的问题和大型网站几乎一模一样。不需要特别的讨论它们。

· 只是,毕竟游戏不都是开房间的玩法。

· 小结:游戏服务器框架特点

· 1、真正的数据都在内存中,数据库性能不那么重要

· 注:很多大型游戏采用了共享内存,避免宕机时损失过大。

· 2、单CPU性能比CPU数量重要的多。

· 3、目前有很多游戏,特别是手游,使用Redis读写代替内存读写,甚至也有用Mongo的。

· 4、开新服、旧区合服的情况,非常适合云平台。

· 先进服务器框架

1、BigWorld。理念过于超前,把并发性做到极致,开发友好度弱到极致,已废。

2、Skynet。本人强烈推荐,谁学谁知道,除了必须要用lua语言,没有什么缺点。

· 聊聊十万行代码

· 游戏服务器开发速度受美术资源制作速度、客户端开发速度制约。近几年我猜测服务器方面并不会有大的技术革新。

· 游戏开发未来的趋势是多元化、低门槛化、大众化。很长一段时间内BigWorld这种大怪兽级别的引擎不会再崛起。

· 分布式框架的崛起时间点,无论如何,也在VR技术成熟之后了。

服务器推荐

联系阿里云代理商采购,下面将详细进行介绍,请认真阅读。

由于阿里云有上百款产品,因此要了解详细的返佣比例,可以在采购之前询问我(加我的QQ或微信,都是2040593,最好备注“阿里云采购”字样)。

代理商的作用

其实很好理解,就是帮助阿里云进行渠道分销。要知道一个事实,任何一家公司,不管它的产品做得多么的好,都无法覆盖100%的用户,所以渠道为王。就像oppo、vivo的线下实体手机店那么多,都是一个道理。本站站长就是阿里云钻石级代理,最高能优惠15%,也就是8.5折。

不改变用户的采购和付款方式

这点非常重要,也就是说,用户原来是在阿里云官网直接购买产品的,找到代理商之后,只需要按照代理商的方式做好关联,然后用户可以继续在官网直接购买,发票也是继续由阿里云官方提供等额发票。

这就避免了遇见一些谎称是代理商,实质是骗子的可能性。所以,除非您已经和代理商多次进行合作了,充分信任了,否则不要将采购款打给代理商代购。

优惠的方式

方式是先买后返,用户先在阿里云官网购买,经过一定的周期(比如一周、两周),阿里云会跟代理商进行结算,然后代理商再将优惠的部分以转账的形式给到用户(支付宝、微信、银行卡转账都行)。这里完全不必担心信用问题,如果代理商承诺的优惠最后不兑现,用户可以发工单投诉的,这样的代理商会受到阿里云严惩,损失是巨大的,至少本人在从事代理商工作多年以来,从未发生这种情况。

另一种情况,是用户在获取的返利后,把之前购买的产品恶意退款,这种情况也是极少,基本没出现过。

总之,诚信为本,这是做生意的基本职业道德。

最高优惠15%

首先,要说明的是,这个优惠是在官网的基础上进行再次优惠(就是折上折)。比如说,你在官网购买阿里云服务器,原价是1000元,官网已经优惠了15%了,你需要付款850元,而代理商还可以再优惠15%。前面说了,先买后返,你先付850元,经过一周后,代理商再返回850*15%=127.5元

通常来说,云服务器、云数据库、云安全产品,都是返15%;网络产品,比如带宽、流量包、CDN流量包,返5%。

对了,必须是1年(含)内的包年包月实例才返15%,按量付费的产品不返,超过1年,比如2年、3年的产品,因为阿里云官网本身的折扣已经非常低了,代理商只能返5%,不管是什么产品。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: