当前课程知识点:游戏程序设计 > 第十四章 《分布式系统设计 》 > 14.10 分布系统的关键能力 > 14.10 分布系统的关键能力
下面我们来看一下分布系统的能力
这块我会比较简单的过一下
因为刚才在前面很多都已经提到了
就是包括协同开发平行扩容
负载均衡容灾备份
柔性可用
这里边
我们可以看一下协同开发
但其实有提到了很多
包括说系统之间会通过协议通讯
它不直接调用函数
然后它可以并行开发独立测试
减少大家加班的时间
可以早点下班
然后呢
它的那个Bug可以相互隔离
比如说今天验收的时候说
这个好友的状态不对了
那好吧
谁负责好友吗
那就留下来就好了
其他的可以happy去了理想状态
然后还有就是各自的优化
我们就是对我们这种就是追求技术
这个极限的程序来说
我们很喜欢做优化
所以经常会说叫什么过度优化
那我们不能打击大家的积极性嘛
你不能说你这个别做优化了
没关系你放心做优化
但是因为在你自己的系统去做优化
最差就是你这个系统出问题了吧
那我们也能定位出来
别说你自己做了优化以后
然后整个进程性能弹不上去了
然后大家都不知道到底谁干的这个事情
对所以说它可以不互相影响
当然快速迭代上敏捷开发的都是
这些带来的好处
然后呢
他还有多级的负载均衡
这块其实也是很重要
然后这里我也大概点一下
因为这块在分布系统里边
它这种对用户的用户量
达到一定的程度的时候
这块有时候往往会出现瓶颈
包括我们这次线上的时候也出现了一些问题
我给大家分享下
它有一个前端的接入,它有做负载均衡
比如说
一百万的用户
我们现在的大厅就有一百多台
那么我们肯定是希望
这一百多台大厅的链接
尽可能的是均衡嘛
不能说某一些机器给撑满了
然后某些机器有撑不满
还有个问题就是你要能够做到负载均衡
也就意味着你能够动态调控他们的流量
如果你能做到动态调控它的流量
那么你就获得了一个能力
是什么呢
就是你可以线上去做热更
比如说我现在有一百多台机器
然后看一下
现在实际的在线人数相对比较低
好像自己更新一个Bug
那么我就可以通过把用户从几台机器上赶走
然后把这几台机器进行做一下更新
更新完以后在更新另外一批
对用户来说完全无感知的
但如果你没有这种前端负载均衡的能力
别想了
你就只能说
这部用户下把他强行踢下线
然后换一波
那这个玩家估计也呆不了多久
然后大厅的分配形式也是一样的
还有个世界聊天的管理吧
世界聊天
我们知道以前有什么小喇叭
大喇叭的说法
现在的话有频道切分
那这里的话你肯定也是需要说
根据这种情况吧
用户多少的玩家分配到多少机器
比如说我们认为是我们每台机器
可以支撑五千人同时聊天
然后最后实际发现
好像不需要让用户的聊天频率这么高
然后我们就把他提升到那个一万多人
甚至两万呢
那你前端如果没有
这样子的一个管理能力的话
你发现也是没办法在线做
然后还有一个就是匹配
对局房间
这里有一个可以跟大家交流一下
就是我们上线的那一天
虽然我们很快的冲到两百多万
但是其实我有几个坎
但是在三十多万的时候出现了一个问题
就是发现用户突然大量的出现
房间开不了的情况
然后呢
然后外网玩家也是
有很大的这个抱怨
然后我们去看
结果发现就是这一块出了问题
当时的这一块采用的策略是什么呢
就是说为了匹配的效果比较好
我们希望把用户
尽量地分配到一个匹配池中去处理
这样子的话可以让大家匹配效果最好
但这样一个造成的问题就是
玩家太热情的时候
你单个机器的承载预估评估不准
然后导致
这台机器处理的能力受限
它的那个大量超时
所以我们后来就线上紧急改了
把它这种分配方式改成了随机分配方式
然后来解决这样的问题
所以说
到时大家可以看到为什么会提到一个多级
就是在不同的业务场景之下
我们的负载均衡都要各自隔离才行
那只有在分布式的系统中
它才有办法做这样的隔离
才能够个体之间的负载均衡的一个策略
可以各自的进行定制化
不会相互受到影响
最后的话就是其他的各种能力了
因为这边的一些
比如说平行扩容
还有
灰度的一些部署
然后还有我们说的柔性的可用
还有这个自动部署
自动切换
这些主备部署
自动切换
这些都是分布式系统中
一些核心的能力
这边有一个特别值得一提的就是
柔性可用什么意思呢
就是
我们有时候会发现说
由于某些原因
我们可能不得不把线上的一些服务给停掉
那这个时候的话
只有把各种系统拆分了
我们才能够说屏蔽一些异常的服务
或者是因为某些原因
我们不得不停了
然后还保证我们的核心流程是正常工作的
所谓的核心流程就是登陆
然后能够开房间
能够玩对局
然后再加上一些
比如说购买之类的
然后其他一些聊天的好友吧
我们暂时都可以容忍一下嘛
就是只有做到这样子的话
才会让你的整套系统的可用性会更强
才会有一套就是更稳定的系统
然后来支撑我们这种几百万PCU
几千万DAU这样一套系统
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-8.2 物理回顾2
--单选题
-8.3 材质 1
--8.3 材质 1
-8.4 材质 2
--8.4 材质 2
-8.5 材质3
--8.5 材质3
-8.6局部光照
--8.6局部光照
--单选题
-8.7 全局光照
--8.7 全局光照
--单选题
-9.1 动画介绍
--9.1 动画介绍
--多选题
-9.2 游戏动画介绍
-9.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题