那么有没有成本比较低的方式呢,有,就是在每个服务器上只部署静态资源,静态资源通常不涉及到数据库,所以成本也比较低,而且也能提高用户的访问速度 。
到这里,介绍了CDN想要达到的目的,那么怎么达到这个目的呢?
现在如果要比较CDN系统,我们可以考虑两点:
- CDN系统中存储静态资源服务器的性能以及网速怎么样 。
- CDN系统中全国甚至全球范围内服务器节点的数量以及部署情况 。
第一点很好理解,第二点大家应该也能理解了,如果静态资源的服务器节点很多,能够让每个用户在访问这些静态资源时都不用“跑很远的路程”才能获取到,那么自然这是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服务器了 。
文章插图
补充:在对域名解析时有多种类型的记录,最常用的比如:
- A记录:一个域名对应一个IP地址
- CNAME:一个域名对应另外一个域名
- NS:将子域名指定其他DNS服务器解析
文章插图
总结通过上面的文章我们可以发现,CDN的实现原理依赖于DNS,因为本人不是专门搞网络的,所以文中如果有不准确的地方,还请各位大佬指出 。创作不易,还请多多转发
推荐阅读
- 五分钟搞定 HTTPS 配置,手把手教
- 程序员告诉你微信营销号如何防封、解封
- 太极拳的五素养 练习时必须要注意
- 你必须掌握的太极拳要领
- 自带雪板去滑雪门票会便宜吗 滑雪服要自己带吗
- 滑雪裤应该穿大一号的吗 滑雪服要买大一号的吗
- 有氧瘦身健美体操怎么做?需要注意什么?
- 绿松石的这些傻问题不要问
- 保存春笋很简单,不要直接放冰箱,教你正确方法,久放依旧新鲜
- 车子停放半年再开,油箱中的汽油需要更换吗?