2.5 PSP分布式文件传输
1. 前文回溯
前面已经简单介绍过PSP文件传输的一些特点,这里进行简单回溯
1. P2P文件传输不存在一个一直开启的服务器,各个设备既充当服务器又充当客户
2. 各个端系统之间直接交流,不像CS结构中用户之间不能直接交流
3.各个设备既充当服务器,向其他设备提供服务;又充当客户,请求服务
4. 新的用户加入时同时带来更多的服务端容量又带来更多的服务请求
5. 设备之间的链接不持续,IP地址会改变
2. CS服务和P2P服务的比较--分布式文件传输
对于CS服务来说,首先试着计算传输大小为F的文件给N个用户的所需时间
对于服务端的发送来说,因为有N个用户,假设服务端的上传容量为us,则所需时间为:
NF/us
因此总时长为:
Dc-s > max{NF/us,,F/dmin}
而对于P2P传输来说,只需要上传一份文件就足够。下载端的速度则根据最慢的端决定,因此为:
DP2P > max{F/us,,F/dmin,,NF/(us + Sui)}
下面展示了两种服务的速率计算结果,可以发现P2P对多人数环境具有显著优势
3.应用实例--bittorrent
BitTorrent 是使用P2P模式的一种文件传输协议。torrent指的是参与传输文件的所有端的集合。在一个TORRENT中,各个端彼此下载等长度的文件块(chunk)。彼此之间既从对方处下载文件又自己向对方上传文件。当一方下载完成之后,可以选择离开也可以继续进行上传。为了得知目前torrent的具体情况,我们在每个torrent下载中引入一个追踪器(tracker),追踪器记录当前进行下载和上传的所有用户的信息。
如图所示,当用户进入torrent传输时,追踪器会给用户提供一个部分端的名单,随后用户可以向地址上的端建立并行的TCP链接进行文件传输。
由于并非所有端都具有完整的文件,因此用户会连续的询问每个端是否有其需要的块,并且发出请求。
在选择传输对象时,用户会采取一种“最稀缺优先”(rarest first)的策略。也就是说,首先需求临近端中副本数量最少的块,这样,最稀缺的块就能得到最快的成长速度,保证整个传输的效率
对于响应其他端的下载请求,用户会自动选择当前具有最高下载速率的端。每隔一段时间,用户都会重新对端的下载速率进行排序。而每隔一段时间,用户也要随机的更换其提供响应的对象,这样用户称为其他对象最高速率的端的概率也会更大
以上的传输方式称为“tit for fat”方式
2.6 流媒体和分布式网络
目前流媒体平台(youtube 哔哩哔哩等)的用户群体是十分庞大的,本节内容将会主要聚焦流媒体平台的主要实现困难和解决方案进行简述
流媒体平台最主要的困难就是其服务的用户设备水平各有不同,带宽不一。为了解决,平台使用了分布式的应用层基础设施
1. 影像
对于视频而言,可以简单的将其看作多个图片的同速率连续播放。对于数字图像来说,图片就是数组的组合。因此,在提供视频时,图象的切换可以通过仅仅修改图片中不同的部分减少传输消耗
对于上面的两张图片来说,如果作为数字图片看待,那么就仅仅有几个像素点的不同。因此在传输中,只需上传不同的像素点即可,这个步骤称为coding
coding分为CBR和VBR两种模式。前者比特率不变,后者比特率可变
2. 影像传输
对于传输影像来说,主要挑战有两个:
1. CS模式的带宽会不断变化,因为网络并不持续稳定
2. 丢包和时延会使得视频质量不高
作为解释,首先简单叙述流媒体传输的基本流程
1. 制作完成的视频上载到服务器中
2. 服务器响应用户请求,上传视频
3. 用户开始下载并播放视频。在此时,用户不仅接收服务器的传输,而且也进行视频播放
这里上传和下载的视频的速率是一致的,也就是说,用户的播放和服务器的上传保持一致。然而,网络延迟并非是固定的。此外,还需要满足用户快进、暂停等的需求,丢包的问题也没有得到解决
因此,引入了阀门机制解决这个问题
playout buffering
上图展示了阀门机制的应用原理。回想上图的传输机制,但是在此时,用户端的传输是不稳定的。因此,引入一个阀门将下载的视频转换为和原视频一致的速率为用户播放,这样就解决了速率不均的问题
DASH
DASH的全称是Dynamic, Adaptive Streaming over HTTP,是基于HTTP的动态自适应流。对于直播等传输环境会广泛应用到DASH
DASH应用于重视视频内容而非视频质量的环境中。首先,视频将会被分为多个小块。之后,每个块将会用不同的比特率进行编码并按照比特率存放在不同服务器中。当用户需要观看视频时,将会周期性选择最合适的视频流进行传输
用户可以决定传输块的时间,比特率和进行请求的服务器。
因此,视频流就是编码,阀门和DASH的结合
内容分布式网络 CDN
CDN用于解决向大量用户进行流媒体传输的挑战。当面对大量用户请求视频传输时,第一种方案是使用一个大型的服务器,但这个方案明显不显示。第二种则是在不同地域分布的网络服务器中存放视频副本,也就是CDN的思想
上图展示了CDN传输的基本流程。视频内容的副本保存在CDN节点上,当用户需要视频传输时,就会选择速率最快的节点路线进行传输
实际使用时,将节点线路作为一个整体,用户和服务器置于其外,节点线路称为OTT