CDN简单介绍

平常CDN这个名词听得不少,但是具体的没有深究过,这里就简单了解下。

什么是CDN

CDN是Content Delivery Network 的缩写,即“内容分发网络”。

CDN的作用

假设你的服务器架设在美国,上面运行了一个购物网站,然后你在中国的机器上想要访问这个购物网站,那么客户端就会向服务器请求所有的资源,包括图片等。但是由于实在太远了,经过中间一层又一层设备的损耗,可能中间的耗时高达几百毫秒甚至几秒,这是无法忍受的。CDN的作用就是在中国帮你也部署一台服务器,然后这台服务器上面会保存一些不怎么会变动的内容,比如图片、视频等,这样当你需要请求图片的时候就只需要向中国的服务器请求即可,不再需要去美国那台服务器要了。所以这里又诞生了一个新的问题:既然是CDN的服务器给你的内容,它是怎么做到的呢?

缓存系统

一个很简单的想法就是,把得到的东西缓存起来,如果之后有用户来索取相同的内容,那直接把缓存的内容交给它就行了,不需要再次索取,达到加速的效果。那么有个问题,如何快速找到用户要的内容呢?一个想法是Hash Table,这个比较简单就不多说了。同时还需要解决一个问题,就是缓存空间是有效的,速度从快到慢分别是内存,SSD,机械硬盘。而CDN则是使用了热度算法,将最火爆的内容放到速度最快的内存中,而最冷的内容甚至都不需要进行缓存,直接去源头获取。

CDN重定向

上面已经解决了CDN的缓存,也就是能够快速准确的提供给用户内容了,但是其实有个问题没有解决,怎么把用户引导到这个CDN的服务器呢?

  • 在DNS上做引流。通过DNS是会把域名转化成IP地址,然后再去访问数据的,所以想当然我们可以通过在用户解析的时候,就把域名转化成CDN服务器的IP地址。
  • HTTP302的重定向功能。HTTP协议里面302会重新返回一个URL给用户,接下来用户会去新的IP地址访问,找到新的

CDN的妙用