代理缓存 | 学习笔记

简介: 快速学习代理缓存,介绍了代理缓存系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算代理缓存】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/811/detail/15717


代理缓存


内容介绍:

一、多媒体数据的传输

二、基于客户端/服务器的流媒体系统

三、代理缓存

四、缓存分类

五、代理缓存算法的比较

六、代理缓存的问题


本课程主要包括互联网多媒体内容的分发,涉及四个内容,一个是代理的缓存机制,内容的分发,网络广播与主播。还有 p2p 的流和 HTTP 流的相关知识,分四小节进行讲解,本小节为代理缓存机制。


一、多媒体数据的传输

1. 多媒体数据传输通过实时传输协议 RTP 定义。

包括载荷的识别,序列的编号的丢失检测,那么用于控制播放的时间戳等等。

2. 在 udp 上进行运行

(1)RTP 不能保证 QoS。

(2)依赖实时传输控制协议 RTCP 监控网络的状态。

(3)为上层的应用自适应提供反馈。

3. 实时流协议 RTSP 协调媒体对象的传送。为交互式的播放启用了丰富的控制机。


二、基于客户端/服务器的流媒体系统

早期的流媒体系统,尤其是小规模的都是下图模式,

图片22.png

左边是客户端,右边是媒体的服务器,而媒体服务器,通常由四个组件组成,第一个是客户端的接口和管理。是用客户端软件进行沟通的,传输管理,会话管理,还有媒体的存储和索引。

实黑线就是从服务器传到客户端的,有 udp 和 RDP、UDP 是数据包,RTP 是传输控制协议相关的内容,红色的双向的虚线主要是 RTSP。还有 RTCP 传输控制协议和传输流实施的这种流协议。

图片23.png

1. 这种模式主要适用于小规模的媒体内容的分法。

如果随着客户端的数量的增大,数据量的越来越大,用户越大,比如有几亿人同时,那媒体的服务器就受不了了。

2. 海量用户的大规模的媒体的分发无法实现

3. 在传统的客户端和服务器的模式上遇到的挑战

(1)主要包括巨大的数据量,这种传输需要大的带宽。

(2)密集的带宽使用。大容量的磁盘的i/o和网络带宽,带宽它持续维持时间很长。

(3)丰富的交互性。比如看视频无论是爱奇艺还是小米的,通过后台的统计,90%左右的媒体内容,其实大家是看不完,可以提前终止掉,它启动以后,有了这个数据以后,就不能把片子一直提前到预取数预取过去,因为后面不看,且大部分有快进快退,不好看就开始快进,有一段看了以后再把它拖到前面去,大家在播放器上都做过类似的操作,那么不同的部分,它访问的速率不同。


三、代理缓存

为了实现应对这些挑战。尤其大规模的用户,海量的数据,高并发的,为了保证整个媒体传输的质量,提高用户的体验,通常使用一种机制叫代理缓存。

1. 什么是代理缓存

不只有一个服务器,在靠近客户端的地方有代理缓存的服务器。把数据缓存到代理服务器上,减少用户端感知的访问的延迟和网络的负载,增强对象的可用性并减少数据的丢包,因为本地的传输或者近距离的传输要比长距离的传输要可靠。因此丢包率等等,这是一个示意图,

图片24.png

左边是客户端,用户可以在任何一个地方,右边是服务器,这是传统的模式,那么客户端,服务器代理缓存中间加了代理服务器,代理服务器里面很重要的,

图片25.png

Cache 叫代理缓存,代理服务器的管理程序,访问数据的时候,客户端有一些不是直接从服务器传来的,有一部分是从缓存里面直接取的。


四、缓存分类

代理缓存里面到底缓存哪些数据?缓存算法分为四种策略,滑动间隔缓存,前缀缓存,分段缓存,还有速率分割缓存,逐个的讲一讲它的主要的思想。

1、滑动间隔缓存,

(1)、滑动间隔缓存是缓存一个媒体对象的滑动间隔,以便连续访问。滑动间隔可以理解为相邻两次访问同一个对象的间隔,比如两个用户都访问某一个图像的一个视频的图像帧,那么它的间隔时间可以叫做一个滑动间隔,举个例子,有两个用户,两个请求 request 1和 request 2。两个用户同时都请求下图中九个图像帧,

图片26.png

缓存在时刻零时,请求R1到达,时间2帧1和帧2已经被R1请求放在了代理缓存里,R2到达的时候,也就是第二个用户到达请求的时候,就直接读缓存。而不是从服务器里面取数据了,它就是本地化的了,到了时间3,帧3通过请求,R1进入到了缓存,而前面已经取到的这个帧一被R2读到,因为间隔过了已经没有人用了。就可以把这一帧给它释放掉,就是这个过程。

(2)显著的降低了后续访问对网络带宽的消耗和启动时间。缓存很重要,缓存可以应对我们速率的变化的波动,但是缓存对磁盘的带宽要求是比较高的,代理缓存部分通常是速率整个的分配的速率的两倍,

2.前缀缓存。

(1)缓存前缀,传输后缀。前缀缓存就是把缓存前缀,剩余的部分直接从服务器传输,前面一部分缓存到代理服务器后面来传。

(2)减少了播放的启动延迟。在播放任何一个电视剧在软件上的时候并打开马上就能够看到,总要等一段时间可长可短,等待时间取决于网络的情况,如果网络好,缓存的快,可能很快就启动了,如果网络慢,一直在等缓存,他觉得根据当时的网络情况,已经可以连续播放的时候才开始播放,这是当前播放策略。

图片27.png

3.分段缓存

(1)数据分割很多段不同的段,区别处理。比如对于热点的关键的片段,热点,关键在访问的日志里面是可以统计出来的,把这样的片段放在缓存里面,换句话说就是热门的,大家都访问的,或者访问量多的这种数据放到缓存里边,用户就访问的时候可以直接从缓存里面取。用户的体验好,

(2)前缀缓存也属于分段缓存的一种。

图片28.png

4.速率分割缓存

缓存思路。

(1)是沿着速率轴,速率轴是垂直的,前面的三种无论是前缀缓存,分段缓存是都是沿着时间轴来缓存的。

(2)把恒定速率,较低的下面部分就是带宽允许的这一部分,交给骨干网传播,从服务器上传。超过的部分,也就是说,骨干网的速率能传东西是因为它是速率相对较低的部分,凡是比它高的,把它通过代理缓存机制,把它放到缓存服务器里面去。

(3)超过的部分的缓存服务器,凡是比它高的,把它通过代理缓存机制,把它放到缓存服务器里面去。

(4)提高了具有这种资源预留的QoS的主干网的利用率,既然网上能传的,能够保证服务质量的,骨干网传,其他的放在代理服务器上,一方面保证了利用带宽的利用率,同时还保证了用户的体验。

图片29.png

(5)工作的提前平滑。

如果客户端具有缓存能力,可以将提前平滑合并到视频分段里面。

在不发生缓冲区溢出时,可以计算出传输速率的范围,DT 是媒体,视频也好,音频也好,它要求的速率。WT,是指的 T 时刻,缓冲区的大小就是速率,保证在at要大于DT,小于等于 WT,以这个图为例。

图片30.png

锯齿形下,是要求 DT 的传输的最小的值,要保证跟上面的缓冲区,配合起来使用,如果控制的话,时高时低,那么其实很难做,可以通过一个 DT,一个 WT,生成中间平滑的曲线。这个平滑的曲线,就是真正的网络上要对它进行保障的传输速率,这样传起来服务器才保障,如果缓冲区很大的话。at 相对就小一点,配合缓冲区一起使用,来使得整体的传输质量平滑。


五、代理缓存算法的比较

总结一下四种不同的代理缓存策略,特点可以从资源需求,性能的改善上来看,滑动间隔对资源的需求,比如磁盘的输入输出是比较高的,里面最严重的时候是它两倍,磁盘空间和同步开销是相对较低,性能改善是很明显的。

而前缀缓存,磁盘的要求中等,整个的开销中等,它的性能改善其实是不错的。

分段缓存,速率,分割缓存有不同,在不同的指标上是有它的优点的或者强项的,比如类似于 VCR 的支持,就是快进快退等等,分段缓存里面可以支持,速率可以支持,前面两段是不能支持的,

图片31.png

(1)在真正的使用里,可以根据具体情况来选择适合的算法。

(2)算法之间并非互相排斥,可以把几种算法综合起来使用。现在基本上都是综合起来使用的,比如分段缓存,可以结合前缀缓存,就可以减少任何关键段的播放的启动时间。


六、代理缓存的问题

代理缓存有没有问题呢?

1.缓存一般是被动的

缓存是要访问的时候。才去取的就是缓存,一般是被动的。就是只有当用户读取一个对象的时候,这个对象才被缓存到缓存区代理的服务器。

2. 代理需要花时间来填充缓冲空间

代理需要花时间来填充,缓冲区就一开始是有一定的等待时间的。比如,尤其是对第一个访问的这个对象的用户。因为他访问以后,数据会到缓冲区。那后面来访问的会速度快,那么对每个对象的第一个访问者,实际上他是没有直接好处的。

但是大家注意啊,没关系,因为互联网上的用户很多,而属于第一个的。平均起来。其实是在发生在同一个人身上的可能性是很小的。可能在访问某个资源的时候,你是第一个,你稍微慢了一点,但是紧接着后面的人都受益了。而且下次访问别的资源的时候,你大概率不是第一个,因为别人已经是这样用过了,你也通过这个缓存直接读,所以说他是有用。

缺点是这样的,怎末把这两个一个被动,一个这个花时间缓存改善,这就是 cdn 的技术,叫做内容的分发机制。那么,内容分发网络就是这几年很火的 cdn 的技术。包括现在的慕课等等,其实都广泛使用的 cdn 的技术

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
1月前
|
存储 缓存 监控
|
1月前
|
存储 缓存 负载均衡
Nginx代理缓存机制
【10月更文挑战第2天】
69 4
|
6月前
|
缓存 NoSQL 关系型数据库
数据库缓存一致性学习笔记(一)
数据库缓存一致性学习笔记(一)
|
6月前
|
缓存 应用服务中间件 Linux
Linux系统中基于NGINX的代理缓存配置指南
配置后,NGINX将缓存后端服务器的响应,并根据缓存配置进行有效期控制。这样可以加速页面加载并减轻后端服务器的负担。
149 0
|
缓存 前端开发
前端学习笔记202306学习笔记第四十七天-vue-强制缓存3
前端学习笔记202306学习笔记第四十七天-vue-强制缓存3
69 0
|
6月前
|
存储 缓存 前端开发
《Webpack5 核心原理与应用实践》学习笔记-> webpack5持久化缓存
《Webpack5 核心原理与应用实践》学习笔记-> webpack5持久化缓存
247 1
|
缓存 NoSQL 算法
Redis学习笔记-缓存容量和淘汰机制核心思想
Redis学习笔记-缓存容量和淘汰机制核心思想
141 0
|
消息中间件 缓存 NoSQL
Redis学习笔记-如何解决缓存和数据库的数据不一致
Redis学习笔记-如何解决缓存和数据库的数据不一致
188 0
|
缓存 NoSQL 数据库
Redis学习笔记-如何应对缓存雪崩、击穿、穿透
Redis学习笔记-如何应对缓存雪崩、击穿、穿透
59 0
|
缓存 前端开发
前端学习笔记202306学习笔记第四十七天-vue-强制缓存2
前端学习笔记202306学习笔记第四十七天-vue-强制缓存2
81 0