第一点很好理解,第二点大家应该也能理解了,如果静态资源的服务器节点很多,能够让每个用户在访问这些静态资源时都不用“跑很远的路程”才能获取到,那么自然这是CDN系统的优点。
有公司看到了这种需求,所以现在其实有很多CDN供应商,比如阿里,腾讯等等都有自己的CDN服务。只要你自己的系统接入了这些大厂所提供的CDN服务,你把自己的静态资源传给CDN服务,那么这些静态资源将自动的分布到全世界各地去。
好,那么现在的问题是,用户在访问静态资源时也是通过域名来访问的,域名会被解析成某一个IP地址,关键的问题就是,DNS系统怎么在做域名解析时,解析出来一个离用户最近的一个IP地址呢。
普通的DNS系统是做不到的,需要一个特殊的DNS服务器,这个特殊DNS需要知道
用户当前所在位置
还需要知道用户现在访问的这个域名对应哪些IP地址,以及这个IP地址分别在哪?
对于第一个问题好解决,直接从用户请求里提取出用户的ip地址,比如这个ip地址被解析为北京电信、上海移动等等。
第二个问题由谁来解决,我们现在考虑的是CDN,CDN提供商肯定知道他们公司在哪些地方部署了机器以及它们的IP地址,所以这个问题只能有CDN提供商来解决,CDN提供商会提供这个特殊的DNS服务器,我们叫做 CDN专用DNS服务器。
这样的话,只要用户在使用某个域名访问静态资源时,如果用户直接配置自己电脑的DNS地址为CDN专用DNS服务器。那么自然解决了问题,但是我们需要考虑的时,我们不能要求世界上所有的用户都去修改自己电脑的DNS地址。所以这个时候就要利用DNS中的CNAME了。
用户使用某个域名来访问静态资源时(这个域名在阿里CDN服务中叫做“加速域名”),比如这个域名为“image.baidu.com”,它对应一个CNAME,叫做“cdn.ali.com”,那么普通DNS服务器(区别CDN专用DNS服务器)在解析“image.baidu.com”时,会先解析成“cdn.ali.com”,普通DNS服务器发现该域名对应的也是一个DNS服务器,那么会将域名解析工作转交给该DNS服务器,该DNS服务器就是CDN专用DNS服务器。CDN专用DNS服务器对“cdn.ali.com”进行解析,然后依据服务器上记录的所有CDN服务器地址信息,选出一个离用户最近的一个CDN服务器地址,并返回给用户,用户即可访问离自己最近的一台CDN服务器了。
总结通过上面的文章我们可以发现,CDN的实现原理依赖于DNS,因为本人不是专门搞网络的,所以文中如果有不准确的地方,还请各位大佬指出。
重点
****有痛点才有创新,一个技术肯定都是为了解决某个痛点才出现的。
请帮忙转发一下,如果想第一时间学习更多的精彩的内容,请关注微信公众号:1点25**