打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
游戏服务器和web服务器有哪些地方不一样

游戏服务器和web服务器有哪些地方不一样:

对延迟要求苛刻,一个网站,延迟是500ms还是1s无关痛痒,用户的操作不会很频繁,往往点击一下就能看上一会。
但对于游戏,尤其是FPS类型的游戏,150ms以上的延迟都会使游戏体验大打折扣,客户端发往服务器的请求一秒钟内往往有十几个之多,微服务那种调用链的开销,绝大部分的游戏都承受不起。哪怕是一个棋牌游戏,你能忍受出牌要卡上1秒吗?不说调用链,即便是把数据放在redis里,每次去取,也承受不起。
像MMO,MOBA,FPS这种实时性要求高的游戏,服务器的帧率在10hz到60hz,一秒钟更新最少10次,每一次更新大约几十(moba,fps)甚至几千(mmo)个unit,留给每一个unit的处理时间最多几毫秒甚至几微秒,而同个数据中心内一个roundtrip time平均就要0.5ms游戏服务器的用户之间,具有高度的交互性,状态性极强。web服务器的用户与用户之间,你操作你的我操作我的,你我之间没关系。
在数据库之上这一层,用户之间同步数据以及顺序性的需求几乎没有。
如果有,那也是在数据库,缓存这一层,比如事务操作一下,缓存同步一下即可。web服务器天然的无状态性,弱状态性适合横向扩展,做分布式。同一个用户的不同请求,往往可以由负载均衡路由到不同的服务器处理。而游戏很难做到这一点,往往都是通过分服,开房间等手段解决。
游戏服务器的数据库数据,具有高度的反范式特点。从用户登录后,基本上用户的所有数据都需要load进内存中。
不像web比如购物网站,登录后,只需要用户名和购物车中物品数量。点开购物车,加载购物车数据。点订单,加载历史订单。每个服务都有自己的数据库,服务自身保证数据的invariants,数据库之间通过最终一致性达成一致即可。
游戏不一样,不可能等到你被砍的时候再去数据库里把你的装备读出来算一下防御力看看该扣多少血。元数据依赖。
游戏的用户数据,可以说是高度依赖元数据,你的装备属性,外形,技能效果等等都是依赖策划配置出的数据表(元数据)。而web服务器其实没有所对应的这一层的的元数据。
一般说到web服务器元数据,基本都是描述服务之间的契约,比如RESTFUL API的JSON定义等。游戏服务器对元数据的依赖是全局性的。
假如有一个微服务化的游戏,想削弱某职业的技能而不重启其他服务比如战斗服务?绝无可能。因为上面几点原因,数据都是保存在进程内的。没有统一的框架。
游戏玩法多种多样,即便是同一种类型的游戏,也可以是脑洞大开,很难抽象出一个行业内可复用的逻辑流程然后再通过框架去做事情,比如spring那一套。【199cloud-艾娜小编】                  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
简易网上书店系统设计与实现
大型网站的架构设计问题----大型高并发高负载网站的系统架构 - 技术相关,大型网站,架构...
精通手游运维的架构体系
从LiveJournal后台发展看大规模网站性能优化方法: 一个藏袍
集团企业人力资源管理系统解决方案
B/S架构及其运行原理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服