网游云上网络优化方案

简介: 网游云上网络优化方案

1. 游戏行业背景

1.1 行业概况

2019全球数字游戏营收1094亿美元,其中中国市场328亿美元。国内游戏⽤户数6.5亿;移动端
(60%)>PC端>主机。移动游戏占⽐逐年增⻓已成为绝对的主流。国内公司近3万+,近200上市,Top10:腾讯53%,网易15%,三七,中手游,世纪华通,完美,搜狐畅游、游族、多益,紫龙互娱。
趋势:业务上融合电竞赛事/直播往社交化、多元化发展;技术上通过AR/VR/云游戏等来提升体验。
政策管控:18年开始趋严,文化部管运营备案;广电总局管版号,19年只有数百个版号。

1.2 业务类型

  • 分类维度:终端、题材、美术风格、玩法、架构
  • 终端:端游、⼿游、页游、主机
  • 玩法:MMORPG、ACG、MOBA、RTS、FPS、SLG
  • 风格:武侠、魔幻、写实、⼆次元
  • 架构:分区分服、全区全服、全球同服

2. 游戏技术特征

2.1 核心技术逻辑

对于任何网络游戏而⾔,同步是⼀定要解决的核心问题,甚至比游戏玩法逻辑本身还重要,什么是同步?同步是网络游戏的基础,通过网络通讯来确保同屏玩家看到的游戏世界中每个游戏单位的位置、世界场景、状态属性都要保持⼀致。即:客户端的表现要⼀致,同时客户端与服务端的数据要⼀致。业界主要有两种同步方式。

状态同步

 

1.jpg
图1

 

状态同步玩法逻辑(比如战⽃逻辑)写在服务端,服务端作为逻辑控制层,客户作为⼀个表现层,玩家对象数据在服务端生成并维护,客户端中玩家对象的所有动作都会通知到服务端,服务端进⾏逻辑计算并将结果同步给所有客户端,客户端执行表现(播放动画、特效并修改玩家对象的属性显示),这种方式下,客户端的数据只能由服务端的指令来修改。
优点:安全性极高,防外挂能力强;断线重连⽐较好实现,无非就是把整个场景和⼈物全部重新⽣成⼀遍发给中途掉线重连上来的客户端去表现即可。
缺点:服务端压力较大(所有动作的计算逻辑需要在服务端上做),网络交互流量大,实现难度大,开发效率低。(通过分区风服来平行扩展);对于格⽃竞技竞速类,玩家动作、位移、⻆度的切换⾮常频繁且快,也需要比较强的同步校验,这时状态同步无法解决。
典型游戏:状态同步对网络延迟的要求并不高(玩家表现层是不是⼀致没有太大关系,只要结果⼀致就行),
⼀般RPG游戏在200-300ms的延迟也能玩下去,如MMORPG,魔兽世界、天龙八部等。

帧同步

 

2.jpg
图2

 

帧同步也叫指令同步,玩法逻辑写在客户端了(比如战斗逻辑),客户端所有动作生成⼀条指令发给服务端(比如攻击对象B),服务端收到指令后什么也不做,直接转发给所有客户端,客户端收到指令后执⾏逻辑计算并执行表现层(播放动画、特效并修改玩家对象的属性数据)。
优点:服务端压力小(仅仅起到⼀个转发的作⽤),网络流量小,能做到更好的及时反馈及细节反馈的⽤户体
验。
缺点:容易外挂,断线重连会⽐较繁琐,需要在客户端重放每⼀条指令。
典型游戏:RTS、moba等即时对战类游戏,对同步性的要求很高,⼀场战斗的人数是确定的。王者荣耀、魔兽争霸3、所有格斗类游戏等。实时性要求非常高,要求RTT小于50ms才能有流畅的体验。

2.2 典型技术架构

分区分服:典型MMORPG

MMORPG 大型多人在线角色扮演,如魔兽世界,剑灵,天龙八部

 

3.jpg
图3

 

特点:玩家之间强交互、实时性要求⾼、全⾯的游戏世界系统。

  1. 业务流:特征,交付实时性,主要压力在哪⾥(网络、cpu、内存)。
  2. 数据流:对数据库的访问逻辑,压力情况。

全区全服:典型MOBA

分少量几个大区、分服对用户不可见;或者全局对客户不可见,应⽤层按⼀定算法进行分配。
ACG/SNS:休闲竞技类
MOBA(Multiplayer online battle arena)匹配开房间类,大逃杀吃鸡类(MOBA+FPS)王者荣耀、绝地求生;堡垒之夜。
特点:休闲竞技类,匹配玩法,需要大量的可匹配玩家,匹配后生成战斗服。

 

4.jpg
图4

 

全球同服:典型SLG

为什么要做全球同服,是⼀个运营需求还是⼀个技术需求?不是所有的游戏类型都适合全球同服。
特点:游戏对象之间弱交互,实时性要求并不高,300ms内的同步延迟可接受;卡牌,SLG等,如COC:往往有3种架构:

  1. 服务端全集中部署,优化接入网络(加速器、DCDN)。
  2. 全分布式部署,服务端应⽤+数据都分区域部署,做区域间数据同步。
  3. 服务端应用层分区域部署,数据集中部署,通过区域缓存+高速通道(专线方式访问DB)。

数据⼀致性问题:⼀个玩家断线,缓存数据还未落地,玩家重新登录被判定到另⼀个区域登录了,可能获取不⼀致的角色数据;需要gamesvr判定上一次登录在哪个区域,通过⼀个全局服务去通知对方gamesvr下线玩家并回写数据,然后再预取数据。

 

5.jpg
图5

 

2.3 技术痛点及诉求

游戏业务最主要就是要求服务端逻辑处理的实时性和高并发支撑能力,玩法逻辑和数据都在⼀个进程是最理想的方式,但往往因为性能容量的限制,⽬前主流都是逻辑模块拆分、分布式部署,同时又要控制分布式调⽤的链路和次数来控制延迟的目的;对于运行时数据基本都是在内存进行处理(如共享内存),玩家角色的结算/存档数据以固定周期持久化。

 

6.jpg
图6

 

基于以上游戏技术特征分析,总体来说对游戏对技术层⾯的诉求优先级是:网络>计算>安全>数据库。
在网络方面核心痛点其实就是如何解决网络延迟、丢包、抖动对玩家卡顿、掉线等体验的破坏,随着服务端技术更新和同屏玩家数量的增加,对游戏服务层的并发访问、稳定性、⽹络延迟也有了越来越高的要求。

3. 游戏网络优化

游戏体验的优化是⼀个系统工程,需要多种优化手段联合作用,业界很多的精力是放在逻辑层的处理上,纯网络层面的优化只能说是一方面,以下基于云环境的网络优化方案进行阐述。

3.1 游戏单服网络能力

对于状态同步的MMORPG类游戏,每⼀次网络同步的数据是整个游戏世界场景的所有单位的属性、状态、行为判定等数据,同步量大,网络吞吐要求高,以⼀个单服设计容量1万在线的MMORPG游戏来说,通常⼀次网络同步的包大小在512byte左右,单⽤户评估带宽30kbps,则出网卡吞吐、包量能力需要的值:

image.png

以上是出公网的网卡的流量,GameServer还存在内网通信的需求,因此在这种场景⼀般建议是选择能⽀持百万级别pps的实例,如:
ecs.c6.4xlarge 依托神⻰架构,将网络虚拟化功能卸载到专用硬件,提供了更⾼的网络io承载能力和稳定性。
同时建议将网络中断分散给不同的vCPU处理,提升网络PPS和带宽性能。即开启网卡多队列功能:

 

7.jpg
图7

 

 

8.jpg
图8

 

3.2 玩家接⼊网络加速

这块主要是玩家到游戏服的公网链路上进行加速。

基于加速器优化玩家接入

加速器与游戏是天然关联的两个行业,主要解决玩家与游戏服因物理距离遥远而出现的延迟、丢包等情况对游戏流畅度的影响,这在国内玩家访问海外游戏服的场景中很常见(比如某些游戏国内禁止发行而国内玩家只能登陆海外服来体验),玩家可以购买各类加速器产品,或者使⽤游戏客户端⾃集成的加速产品来实现链路优化,在云上要构建这⼀层加速其实已经⾮常简单,甚⾄直接利⽤云的架构轻松实现⼀个加速器产品。

 

9.jpg
图9

 

具体流量路径

  • 在上海VPC和⽇本VPC建⽴高速通道实现两地ECS内网互通。
  • 在两端地域ECS之间建立隧道协议,GRE或VXLAN,分别绑定本地地域EIP。
  • 国内玩家通过公⽹VPN连接到上海上车点ECS,经过隧道接⼝路由到日本下车点ECS。
  • ⽇本ECS接收到去往游戏服的数据包从日本本地EIP出去,同时回程路由到隧道接口发给上海ECS。

基于DCDN动态加速页游

对于页游、H5小游戏等产品由于其⾛http协议,轻客户端模式动态逻辑中也包含有⼤量静态资源,这类游戏往往是全区全服单地域覆盖全国,网络上的主要痛点是:玩家跨运营商跨地域访问游戏服,网络传输拥塞的时延、丢包等情况严重影响用户体验,同时客户自行去做动静分离、动态加速等方案需要大量的时间、成本投入。

 

10.jpg
图10

 

全站加速(DCDN)通过动静分离、边缘缓存、智能路由、压缩传输等技术,解决跨运营商、网络不稳
定、单线源站、突发流量、网络拥塞等诸多因素导致的响应慢、丢包、服务不稳定的问题,提升动静态混合、纯动态站点或App的加速性能和访问体验;这种比较适合如三七页游、抖⾳小游戏等,其实对于⼀些重度游戏的全局⾮战斗模块、周边系统等也能接入DCDN来进行全局加速。

基于CEN加速特定地区玩家

国内地域⼴阔,游戏服虽是尽量做本地覆盖,但出于成本因素对于有些偏远地区还是覆盖不全,这部分玩家涉及跨运营商跨地域的远程访问游戏服,游戏掉线、卡顿时有发⽣,⽐如对于新疆、⻄藏、宁夏、⻘海等地域,游戏服在部署上基本不会做本地覆盖,如果拉近游戏服与玩家的距离?⽬前基于阿⾥云有种可行的方案是:SLB+CEN+游戏服(跨地域)。

 

11.jpg
图11

 

该⽅案对于没有POP点、anycast⽀持的地域比较合适,相当于SLB挂载跨地域的ECS(白名单开放),拉近游戏服到用户侧距离。

3.3 全球同服⽹络构建

这块主要是基于专线的加速方案,在全球同服游戏类似中,数据传输需要跨运营商、跨多国通信,这对⽹络质量提出更高的要求,当然⽬前能实现真正意义上的全球同服游戏其实没有,主要还是对即时性体验要求不高的SLG、卡牌等类型,游戏对象之间弱交互,实时性要求并不高。

基于GA全球加速

GA利⽤阿⾥云全球传输网络,实现全球用户就近接入和跨地域部署,减少延迟、抖动、丢包等网络问题的影响,按区域覆盖玩家。

 

12.jpg
图12

 

GA为每个接⼊加速区域的地域分配⼀个加速IP,客户端流量通过加速IP就近从接⼊点进⼊阿⾥云加速网络。进⼊阿⾥云加速网络后,全球加速可以智能选择路由并⾃动完成网络调度,然后把客户端的网络访问请求送达至最佳终端节点,避开公网的拥堵,达到减少时延的效果。

基于Anycast EIP 加速

同样全球同服的场景,Anycast 主要解决多国多地域的跨网通信链路的质量问题,通过单个ip覆盖全球的加速能力,这大大简化了游戏全局模块的部署问题。

 

13.jpg
图13

 

阿⾥云⽬前在全球各地域部署anycast pop点,覆盖地域/国家通过这些点来就近接⼊,部署在HK的游戏
服只需要⼀个ip,通过Anycast路由协议在多个Anycast POP点发布该ip,pop点通过专线连接部署在阿⾥云VPC的游戏服务。

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云栖大会展出两款一体机,搭载新一代无影融合架构

10月18日云栖大会开放日上,阿里云基于新一代无影架构的两款一体机已对观众展出。两款新品分为23.8寸标准版和27寸Pro版,Pro版为手绘场景配有触控屏和触控笔,官方介绍为首款设计师云电脑。 在云栖大会展区,观众已经可以对一体机进…

ansys如何删除线_绘画新手不懂如何用ps提取线稿?教你用PS提取自己喜欢的线稿!...

绘画新手不懂如何用ps提取线稿?初学者如何自学绘画?自学板画难吗?怎样才能学习好绘画?想必这些都是绘画初学者们经常在想的问题吧,就是不知道如何才能学习好绘画,然后绘画出自己想要画的东西那么今天灵猫课…

Service Mesh 从“趋势”走向“无聊”

简介: 过去一年,阿里巴巴在 Service Mesh 的探索道路上依旧扎实前行,这种坚定并非只因坚信 Service Mesh 未来一定是云计算基础技术的关键组成部分,还因需要借这一技术趋势去偿还过去所积累下来的技术债(“技术债”并非…

python增加一列数据_python数据怎么添加列?

python在DataFrame数据中添加列的方法: 1、使用concat方法在数据中添加列 concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer join或inner join)还可以指定按照某个轴进行连接。…

开源 1 年半 star 破 1.2 万的 Dapr 是如何在阿里落地的?

简介: Dapr 是 2019 年 10 月微软开源的可移植、事件驱动分布式运行时,它使开发人员能够轻松地构建运行在云平台和边缘的弹性而微服务化的无状态和有状态的应用程序,从而降低基于微服务架构构建现代云原生应用的准入门槛。 作者 | 敖小剑 来源…

cron 每年执行一次_crontab服务执行定时脚本,在指定时间内让php执行处理业务逻辑...

技小白 2019-12-19 11:45:33crontab-e编辑某个用户的cron服务设置执行脚本crontab-l列出某个用户cron服务列表信息crontab-r删除某个用户的cron服务定时任务crontab格式分小时日月星期命令******0-590-231-311-120-6command注:“*”代表取值范围内的数字“/”代表每…

Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩

简介: 弹性伸缩作为 Kubernetes 的核心能力之一,但它一直是围绕这无状态的应用负载展开。而 Fluid 提供了分布式缓存的弹性伸缩能力,可以灵活扩充和收缩数据缓存。 它基于 Runtime 提供了缓存空间、现有缓存比例等性能指标, 结合自身对于 Run…

ff14注册完服务器可以转,FF14怎么转服 FF14转服条件一览-游侠网

你知道FF14怎么转服吗?如果想要换服务器,都有哪些特别的要求呢?下面为大家带来的是FF14转服条件一览,大家一起来了解一下吧。转服条件一览跨区角色转移试行规则1、本次仅开放陆行鸟区转向莫古力区指定服务器功能。我们将在莫古力区…

业务团队如何统一架构设计风格?

简介: 首次上线应用,面对业务框架搭建你是否曾感到无从下手?维护线上应用,面对大量历史包袱你是否正避坑不及深陷泥潭?为何同样是业务应用,不同人的设计风格千差万别?为何最初的设计经过多个迭代…

一文详解物化视图改写

简介: 本文主要介绍什么是物化视图,以及如何实现基于物化视图的查询改写。 作者:阿里云数据库OLAP产品部 云曦 预计算和缓存是计算机领域提高性能以及降低成本的最常见的手段之一。对于那些经常重复的请求,如果可以通过缓存回答…

close_wait过多服务器无响应,记一次大量CLOSE_WAIT连接导致的服务宕机

最近线上服务出现了一段时间的无法响应,在此总结一下问题的排查过程。监控信息监控显示CPU和内存没有异常波动,TCP连接中有大量的CLOSE_WAIT状态的连接。看一下TCP连接断开的过程:也就是说客户端发起了断开连接的包,服务端收到数据…

【Java JVM】Java 实例对象的访问定位

Java 程序会通过栈上的 reference 数据来操作堆上的具体对象。 但是 reference 类型在《Java虚拟机规范》里面只规定了它是一个指向对象的引用, 并没有定义这个引用应该通过什么方式去定位, 访问到堆中对象的具体位置, 所以对象访问方式也是由虚拟机实现而定的,主流…

独家对话阿里云函数计算负责人不瞋:你所不知道的 Serverless

简介: 如果你是一名互联网研发人员,那么极有可能了解并应用过 Serverless 这套技术体系。纵观 Serverless 过去十年,它其实因云而生,也在同时改变云的计算方式。如果套用技术成熟度曲线来描述的话,那么它已经走过了萌芽…

nginx location 匹配 多个规则_三道小练习助你弄懂 Nginx location 匹配

在 Nginx 中我们可以通过配置 location 指令块,来决定一个请求 url 如何处理。如果我们编写了多条 location 指令块,如何保证各个 location 不会产生冲突?如何理清 location 的匹配顺序?带着这两个问题,我们先来做几道…

手机淘宝轻店业务 Serverless 研发模式升级实践

简介: 随着 Serverless 在业界各云平台落地,阿里内部 Serverless 研发平台、各种研发模式也在业务中逐步落地,如火如荼。在此契机下,淘系团队启动了轻店 Serverless 研发模式升级战役,基于阿里集团底层设施建设、上层技…

服务器 独立显卡 显示不出来,dell服务器R720+独立显卡GTX1650,进不去系统,UEIF报错...

戴尔服务器dell R720的显卡问题。操作系统是win2008R2。现在是安装的华硕750ti,运行ok,多个屏幕。买了技嘉gtx1650,刚出的显卡安装了。在集成显卡情况下打了驱动,设备管理显示识别了。但是切换到GTX1650显卡下启动系统&#xff0c…

饿了么EMonitor演进史

简介: 可观测性作为技术体系的核心环节之一,跟随饿了么技术的飞速发展,不断自我革新。 序言 时间回到2008年,还在上海交通大学上学的张旭豪、康嘉等人在上海创办了饿了么,从校园外卖场景出发,饿了么一步一…

注入点批量收集工具_原来微信群也是能够批量管理的,学到了

运营微信社群的人都知道,在没有工具的时代,自己总会人肉管理的一批微信群,少则几个,多个几十个上百个,那么现在微信群的管理到了工具时代,怎么批量管理比较好呢?微信群区别于论坛,作…

宿主机进程挂载到容器内_迄今为止最严重的容器逃逸漏洞:Docker cp命令漏洞分析(CVE201914271)...

摘要在过去几年中,我们在各种容器平台(包括Docker、Podman和Kubernetes)中发现了copy(cp)命令中存在多个漏洞。其中,迄今为止最严重的的一个漏洞是在今年7月被发现和披露的。然而,在该漏洞发布的当时,并没有立即引起太多关注&…

知乎的 Flink 数据集成平台建设实践

简介: 本文由知乎技术平台负责人孙晓光分享,主要介绍知乎 Flink 数据集成平台建设实践。内容如下: 1. 业务场景 ; 2. 历史设计 ; 3. 全面转向 Flink 后的设计 ; 4. 未来 Flink 应用场景的规划。 本文由知乎…