CDN
内容分发网络CDN
现阶段,很多视频公司没日需要给用户推送大量的视频,这些视频如果都从公司的主服务器推送出去,则会给主服务器造成压力,而且由于区域原因,还会带来很高的时延。
CDN就是为了解决上面的问题。CDN服务器可以分布在多个地区,它存储那些视频以及图片的副本,用于用户请求时将视频等内容响应给用户。可以减小主服务器带宽压力,而且根据用户地理位置,分配不同的CDN,可以减少时延。
CDN采用集群部署,如果用户请求的CDN集群没有用户的目标视频,则该CDN集群会从中心仓库或者另一个集群搜索该视频,然后一边给用户传输,一边缓存在本集群中。
CDN操作
当用于从浏览器请求某视频时,CDN需要先截获用户请求,才能确定适合用户的CDN集群,以及将用户请求重定向到该集群中。
如何截获和重定向
截获请求和重定向需要依赖于DNS。假如公司A用了公司B提供的CDN服务,那么一个大概的流程如下:
1、用户访问公司A的网站,点击了一个视频,那么他会向对应的域名发起请求(例如请求https://www.bilibili.com/video/xxx),获取该视频。
2、用户的本地DNS服务器会将请求转发到权威DNS服务器,权威DNS服务器发现了域名中的video,那么它并不会向用户返回一个IP地址,而是返回一个B公司的主机名。
3、然后,该请求就进入了B公司专用的DNS设施。然后用户本地DNS会发起第二个请求,此时就是直接向公司B发起的DNS请求,这个请求会得到一个指向B公司的ip地址,然后用户可以从这里获取到视频的信息。
从这里,用户发起向公司A的请求就被转变为向公司B的CDN服务器的请求。

集群选择策略
在上面的重定向过程中,公司B的CDN服务器是可以知道用户本地DNS地址,那么他就可以根据该ip来为用户分配最为临近的CDN集群。
参考
《计算机网络导论:自顶向下方法》