首页 > 其他分享 >游戏开发:全球服架构探索之网络质量优化

游戏开发:全球服架构探索之网络质量优化

时间:2024-05-20 21:44:48浏览次数:31  
标签:架构 游戏 探索 数据库 网络 存盘 质量 优化 客户端

TIPS:

我们做的全球同服,需要解决的难点主要有:

  1. 客观物理距离造成的网络质量问题;
  2. 负载均衡支持跨地区监听;
  3. 部署分区支持热扩展。

一. 网络质量优化

物理距离造成的网络质量问题,可能体现在以下方面:

1)server端的不稳定以及响应延迟;

2)网络波动造成存盘数据丢失;

3)运维部署工具失效;

首先明确一个原则,如果对全球范围内的客户端提供服务,那么尽可能优化网络质量这个职责,应该由服务提供方来承担,而不应该完全依赖客户端的本地网络环境。

针对业务响应延迟问题:

优化思路是:在主机器群尽可能集中的前提下,将架构中与客户端直接交互的入口分散部署到就近地区去,弱化客户端网络环境对数据交互的影响,同时通过提高分区与主区之间的网络质量,来达到接管优化网络的职责。优化客户端TO服务端的网络是复杂的(因为客户端环境是复杂的),优化服务端TO服务端的网络是简单的(同集群内网络优化)。

优化方案是:从集群架构中独立出登录入口和网关入口,部署到全球多个主要地区,通过域名解析规则,将各地区客户端解析到就近的服务入口,通过各分区的入口连回主区,分区和主区之间使用专属网络加速专线提高网络质量(延迟和丢包率都有大幅减低)。

如何定位统计各地区网络情况?

client端在游戏内收集网络质量相关信息,上行到中央数据后台,数据后台根据地区等多维度统计分析网络情况,针对性做扩展部署分区等优化动作。

如何针对地区做网络质量优化?

在网络延迟本土新增部署入口分区,热更新接入服务器集群(通过更新DNS解析规则),使延迟区通过所在本土服务入口接入游戏服务。

针对数据库数据安全的容灾方案:

首先需要明确一个游戏项目中数据库的使用原则:职责单一化。对于游戏这类对实时交互性要求较高的项目,数据库应该承担的是数据备份容灾责任,而应该避免作为具体业务模块间的数据交换方案。即,数据存盘操作只是对内存数据的持久化保存,而不作为业务设计的一部分,业务模块的数据交互应该在内存层面统一体现,以避免高并发场景下的性能问题。

那么所有存盘数据都是覆盖更新,此时单次存盘操作失效从业务层面看是可接受的。

这里不谈数据库产品支持的集群方案(高可用),只给出当数据存盘失败时业务层的容灾方案:以数据库临时文件的方式暂存在本地机器(比如mongdb存盘失败时以bson文件保存),当数据库连接恢复的时候,再有序或触发式地写回到数据库里面去。

针对工具链稳定性的优化:

当生产环境分布在全球多地区,开发环境对外的资源同步操作,使用直连的方案,速率和稳定性受网络质量影响是大的。优化思路是使用中转层,将资源推送上云(各分区的云端,走专属网络加速),再由生产环境下载获取。工具链方案:https://www.cnblogs.com/linxx-/p/18107305

标签:架构,游戏,探索,数据库,网络,存盘,质量,优化,客户端
From: https://www.cnblogs.com/linxx-/p/18202829

相关文章

  • 三周年活动解密游戏
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`三周年活动解密游戏日期:2019-9-22阿珏谈天说地浏览:1200次评论:10条首先先感谢来访和参与的小伙伴们,让三周年活动完美结束,寄出......
  • 小程序架构
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`小程序架构日期:2019-5-17阿珏折腾代码浏览:1708次评论:4条不知道大家们写小程序是怎么个写法的,前几个月在写微信小程序,自己整的一种架构,或者叫......
  • P1057 [NOIP2008 普及组] 传球游戏
    链接:https://www.luogu.com.cn/problem/P1057思路:左手倒右手,建立递推方程建立初始参数:定义dp[j][k]是第k次,以j结尾的方法,就是传k次最后传到j的方法。那么状态转移方程:dp[j][k]=dp[next][k-1]+dp[before][k-1]。其中before是j的前一个元素(j-1);next是j的后一个元素j+1。同时要注......
  • QQ家园文字游戏【魔法花园】复刻(一):花朵的种植与操作
    魔法花园是QQ家园中的一款种植花朵养成类文字游戏,随着QQ家园的关闭游戏也一同关闭。作为一款简单的养成类游戏,当时拥有庞大的用户群体,当初定闹钟去收花、偷花还记忆犹新。随着移动网络的发展,文字类游戏已经渐渐没落,已经没有多少人去游玩,很多比较有趣的文字游戏也一并消失了。魔法......
  • 了解 PD/QC 快充电压诱骗芯片 PW6606,探索分析快充协议技术
    充电器一般分两种:1,A口充电器,就是我们常见的USB口,如下图,这种通用快充协议叫:QC3.0,QC2.0快充,是属于快充刚开始的充电协议,支持5V,9V,12V和20V电压输出充电器,充电器功率一般为18W.2,是因为TYPEC的普及,慢慢很多手机更换用TYPEC口了,也诞生了TYPEC的通用快充协议名......
  • 探讨篇(一):服务粒度的艺术 - 简化架构与避免服务泛滥
    一、背景上周小组有个需求上线牵扯9个应用(小组目前维护了26个服务,由于团队系统业务属性特征基于高可用、高性能原则拆分,有些是合理的,有些不是很合理的),同时上周OpsReview的一个微服务滥用典范案例(Promise服务A调用服务B,服务B只是读个配置数据返回,无具体业务逻辑),OpsReview会上也......
  • 探讨篇(二):分层架构的艺术 - 打造合理且高效的架构体系
    上篇从服务粒度角度进行了探讨,本文继续从服务内的分层角度探讨。本文的观点源自我在学习与实践过程中的深思熟虑,尚处于不断探索和验证的阶段。希望能“抛砖引玉”,激发更多的讨论与交流。让我们共同进步,在探讨与实证中寻求真知。一、背景应用分层看似直观,但实践中常见误区:开放接......
  • Godot Breakeys Godot Beginner Tutorial 游戏开发笔记
    目录前言资源下载添加人物节点运动状态机移动平台单向穿过奇怪的BugArea2DBodyEntered死亡区域全局类多线程安全TileMap处理TileMap分层前言这次来学习一下youtube的传奇Unity博主,Breakeys的Godot新手教程。Breakeys是从15岁左右就开始用unity做游戏并在youtube上面发布视频了。......
  • 人工智能帮你一键生成完美架构图
    简介架构图通过图形化的表达方式,用于呈现系统、软件的结构、组件、关系和交互方式。一个明确的架构图可以更好地辅助业务分析、技术架构分析的工作。架构图的设计是一个有难度的任务,设计者必须要对业务、相关技术栈都非常清晰才能设计出来符合需求的架构图。实践演练有明确的......
  • 深入解析xLSTM:LSTM架构的演进及PyTorch代码实现详解
    xLSTM的新闻大家可能前几天都已经看过了,原作者提出更强的xLSTM,可以将LSTM扩展到数十亿参数规模,我们今天就来将其与原始的lstm进行一个详细的对比,然后再使用Pytorch实现一个简单的xLSTM。xLSTMxLSTM是对传统LSTM的一种扩展,它通过引入新的门控机制和记忆结构来改进LSTM,旨在提......