网络问题优化方案一
问题描述
部分玩家(尤其是北方玩家)访问24好玩游戏,反馈游戏慢
问题分析
引发游戏慢的根本因素是:
- 网络耗时
- 服务器处理耗时
具体体现的可分为以下几种:
- CDN资源访问慢
- 服务器请求响应慢
- 资源、ajax请求过多
以上因素所占的比重暂时还无法确定
前提
- 监控系统,用于定位具体原因
原理
- 数据部分独立
- 非独立数据:全局共享 + 数据库底层同步
- 节点的请求根据游戏ID来分配,同一个游戏所有请求全部转发至同一节点
方案设计
- 保证业务层、数据层的分离,避免业务层混乱
- 数据库多节点,各个节点之间数据同步
- 尽量保证数据库单点写
- 数据容易出现写冲突的服务对立为公共服务
结构图
方案图
大部分业务逻辑在游戏节点完成,另外部分业务逻辑在公共服务上进行
主要组件
- DNS(SLB) : 智能DNS,根据区域/运营商解析到不同的IP
- SLB : 负载均衡器(每个节点只有一个或者多个负载均衡器)
- DATA SYNC : 数据库同步服务,主要利用阿里云DTS服务,将定制平台编辑的信息同步只各个节点
本方案主要包含一下三个部分
定制平台/管理后台 (单节点)
定制平台新建、编辑游戏,查看游戏统计数据 管理后台
公共服务(单节点)
处理全平台数据唯一或者要求数据高度试试同步的服务,如抽奖、获取公众号token
游戏服(多节点)
处理游戏的大部分逻辑
主要解决问题
- 部分地区访问单点服务器,受网络影响较大。
需要考虑的问题
- 公共服务管理/授权
- 数据库结构、业务逻辑调整(比如游戏只读部分与读写部分字段进行分离)
- 系统解耦,服务拆分
风险
- 实现难度大
成本
- 智能DNS
- 节点(服务器+DB+SLB) * n