当前课程知识点:游戏程序设计 > 第十四章 《分布式系统设计 》 > 14.5 超时处理 > 14.5 超时处理
那么前面我们讲
我们在CPU调动的时候
或者是我们发现
当一个任务需要去 阻塞在那里
需要等待数据来
我们这时候要放出CPU
或者叫我们要让渡出CPU
那等到我的数据到达之后
我再来继续执行
那这里有一个问题
就是说
如果我需要的数据一直都不来怎么办
那这种情况
什么情况下可能发生的
比如说我们需要去第三方的服务器上
去调用一个借口
但是很不幸
第三方服务那边它们的网络出了问题了
他们内部的节点出了问题
他没有给我们响应
那么这个时候
是不是我们一直等在这里
一直等到天荒地老
等不到对吧
举个简单的例子
我们玩游戏的时候
我可能放了一个技能
这个技能放出去之后
一直得不到响应
那么对于我们玩游戏的客户端上来讲
会看到这句话对吧
大家会看到一个在这里一个loading状态
就卡在这里
那么如果一直卡在这里
那怎么玩了这个游戏就没法玩了
整个界面都卡死了
那么所以
对于我们需要等待
第三方数据回来
我们把它的设置一个时间
一段时间以后
我就不会再等了
这个时候我需要
通过各种方式来告诉用户
比如说我会直接返回个错误码
告诉那个用户说
现在服务
可能出了点问题
你重试一次
或者是过一会儿再来对吧
这个时候让用户或者玩家
能够知道
现在这个地方
或者这个界面或者这个操作可能有问题
那我们换一个地方
或者是过一会儿重试一下
那么
像这种我等待一段时间
需要继续去处理一些事情的时候
这里我们把它叫做一个超时的问题
那么超时的这种问题
除了我们程序
后来我们做开发过程中会遇到
那么在生活中
其实大家也会经常会遇到这种问题
那么简单来讲
就说我们可能会设个闹钟
比如明天早上
我可能因为有点事情要六点钟起床
那我们会把
闹钟定到明天早上六点
那么时间到了之后
他会通知我
做什么事情对吧
那么提醒我一件事情要做
那么在手机上就更方便了
大家会在手机上去定很多个闹钟
同时在可能不同的时间点
去提醒大家做什么事情
这是我们生活中的一些
关于时间的一些
超时的一些提醒
一些方案
就说我们说的技能冷却
大家玩王者荣耀的时候点了一个技能对吧
它有三个技能
给你有普通技能还有大招技能对吧
那么你用完了之后
他是要有冷却的
这个是一个所谓的定时
那么其实还有很多
比如说我们场景里面的野怪的刷新
对吧
他是也是有倒计时的对吧
还有其实大家可能会看不到的
当一个游戏里面的角色
它做一个动作
进行一个砍人的动作的时候
它实际上也是有CD的
只是这个CD时间可能很短
大家感受不到
否则的话
你可能会就无限的连招对吧
无限的无限的对吧
这个动作攻击下去
他中间是有CD的一个间隔的
所以从这里我们大家
稍微稍微去想一想
就会发现它游戏里面其实有大量的地方
会用到定时器
甚至很多地方
我们都可能都没有意识到
他是个定时器的这个概念
那么
我们简单的算一下
每个玩家
假如他有
五个吧
五个定时器
那如果我们有一百万个玩家
是不是实际上在服务器端
我们分布式系统里面要处理五百万的定时器对吧
那么这种大量的定时器
我们在处理过程中
如何去管理
如果说我们生活中
有大量的这样的定时器
每个人可能带的有几个吗
如果真的让一个人管理
成千上万的定时器可能会崩溃了
没法去弄
那么可能
一直处在这种被倒计时啊
被定时器打断的一个情况
那么对于程序来讲
他就很好
它就非常擅长于做这种机械化的
这种程序化的事情
所以这里回到一个问题
我们如何管理
分布式系统中的那种成千上万的一个定时器
那么对于定时器来讲
它的业务模型
相对来讲
不是那么的复杂
因为它就是
用的时候开启一个定时器
这个定时器
比如说十秒以后吧
前面我们想到我们的IO
我们等待IO的时候
我们可能不想等太长时间
我等了一段时间之后
我需要有一个保底的机制
那就十秒钟之后
我一定会要去给用户一个反馈
无论是对是错
那么我们开启一个十秒钟的一个定时器
那么定时器到了之后
需要能够触发我的超时逻辑
对吧
那么这里的问题是谁来处理
谁来触发
对吧
生活中的话我们是交给了闹钟
对吧
交给他手机里面的闹钟
进门的日历或者是叫闹钟
那么在我们程序里面
管理这么大量级的定时器
那么需要有一个叫
定时器的管理器
它专门负责管理
海量的一个定时器
那么
既然它要管理的话
那么就需要有一个管理的算法
这个管理的算法我们会考虑
它的一些性能指标
对吧
他的及时性
那么常见的这些定时器管理的算法
比如有些红黑树算法
最小堆算法
还有右边
大家看到一个时间轮
时间轮的这种算法
每一种定时器处理的一个算法
它都是有一个
有自己的优点
一些自己擅长的一些场景
比如说像
我可能在性能上更强对吧
各种插入和删除的性能对吧
那么它表示的精度
比如它的时长范围
可能相对来讲就没那么久
比如说可能20年以后的
别说几年以后的定时器
这种当然我们通常不需要那么长呢
但是它不同的维度
都有自己的优点
自己擅长的地方
那么这一块的话
大家课后可以去
进一步的对这一块进行一个学习
-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运维案列分析
--多选题