美文网首页程序设计
CDN(Content Delivery Network)技术原

CDN(Content Delivery Network)技术原

作者: bjennyzhen | 来源:发表于2017-10-09 14:48 被阅读14次

    什么是CDN?

    CDN即内容分发网络。其目的是在现有Internet中增加一层新的网络架构,将网站内容发布到最接近用户的网络"边缘",使用户可以就近取得所需内容,解决Internet网络拥塞状态,提高用户访问网站的响应速度。从技术上全面解决网络带宽小、用户访问量大、网点分布不均等原因造成的用户访问网站响应慢等问题。

    背景知识:

    • A(Address)记录:即IP解析,指定主机名(域名)对应的IP地址
    • CNAME记录:即别名解析,解析主机名(域名)对应的主机别名;
      两者区别:
      A记录和CNAME记录都属于域名解析。A记录就是把一个域名解析到一个IP地址;而CNAME可以把多个域名同时解析到同一个别名,然后对这个别名做A记录。使用CNAME记录可以方便地变更IP地址,如果一台服务器有100个网站,它们都做了别名,那么如果变更服务器IP地址,只需要变更别名的A记录就可以了。

    一、CDN基本知识

    • 回源域名:源站对应的域名;
    • 加速域名:CDN边缘节点的域名;
    • 防盗链:防止别人通过一些技术手段绕过本站的资源展示页,盗用本站资源,让绕开本站资源展示页的链接失效(比较常见的是小站盗用大站资源,如 图片、音乐、视频等);
    • 鉴权:鉴定用户是否具有访问资源的权利

    二、CDN工作原理


    传统网站访问过程:没做CDN前,给的IP是要访问的原始服务器地址

    1. 用户在浏览器中输入要访问的域名;
    2. 浏览器向本地DNS请求域名解析,如果本地DNS缓存有该域名的解析结果,则将解析出的IP地址返回给浏览器;如果本地DNS缓存中没有该域名的解析结果,则以递归方式向整个DNS系统请求解析该域名,并将解析结果返回给浏览器
    3. 浏览器利用得到的IP地址,向该IP对应的服务器发出访问请求
    4. 服务器对此请求响应,将响应结果传至浏览器端显示

    使用CDN缓存后的网站访问过程:接入CDN后,要做两次CNAME,第一次CNAME到全局负载均衡器,第二次CNAME到区域负载均衡器

    1. 用户在浏览器输入要访问的域名
    2. 浏览器向本地DNS请求域名解析,DNS会将域名解析权转交给CNAME指定的CDN专用的DNS服务器
    3. CDN专用的DNS服务器将CDN的全局负载均衡设备IP地址返回给浏览器
    4. 浏览器向全局负载均衡设备发出访问请求
    5. CDN全局负载均衡设备根据请求的URL和用户的IP地址,将用户请求转发到用户所在区域的区域负载均衡设备
    6. 区域负载均衡设备根据URL、用户IP和缓存服务器的负载情况,返回一台合适的服务器IP给用户
    7. 用户向缓存服务器发出访问请求
    8. 缓存服务器响应用户请求,如果用户请求的内容不再缓存服务器上,则缓存服务器要向上一级缓存服务器请求内容,直到追溯到网站的源服务器

    三、CDN四大关键技术

    CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术。
    内容路由技术
    内容路由的功能是由CDN负载均衡系统实现的,它是整个CDN的核心。它根据路由短、距离近、负载轻等策略将用户的请求导向最佳节点。
    负载均衡分为两层:全局负载均衡和区域负载均衡。全局负载均衡的目的是在整个网络范围内将用户请求定位到最近的节点或区域。因此,就近性判断是全局负载均衡的主要功能。本地负载均衡一般局限在一定的区域内,它的目的是在特定区域范围内寻找一台合适的节点提供服务。


    内容分发技术
    内容分发是将内容从源站发送到CDN边缘Cache的过程。目前主要有两种内容分发技术:PUSH(分发)和PULL(回源)
    PUSH是一种主动分发的技术。通常,PUSH由内容管理系统发起,将内容从源或者中心媒体资源库中分发到各边缘Cache节点。分发协议可以采用HTTP/FTP等。通过PUSH分发的内容一般是比较热点的内容。
    PULL(回源)是一种被动的分发技术。PULL分发通常由用户请求驱动。当用户请求的内容在本地边缘Cache节点上不存在时,Cache启动PULL方法从内容源或其他CDN节点实时获取内容。在PULL方法下,内容分发是按需分配。


    内容存储技术
    对CDN系统而言,内容存储主要有:内容源的存储和内容在Cache节点的存储。
    对于内容源的存储,由于内容的规模比较大(通常可达几个甚至几十个TB),而且内容的吞吐量比较大,通常采用海量存储架构。
    对Cache节点的存储,是Cache设计的关键。通常考虑功能和性能两个方面。在功能上包括对各个格式的支持,对部分缓存的支持;在性能上包括支持的容量、多文件吞吐率、可靠性、稳定性等。


    内容管理技术
    内容管理在广义上涵盖了从内容的发布、注入、分发、调整、传递等一系列过程。这里主要强调内容进入Cache点后的管理,即本地内容管理。
    本地内容管理主要针对一个CDN节点(由多个CDN Cache设备和一个本地负载均衡设备构成)

    四、调度方法

    • DNS调度:DNS做省市级别和跨运营商的调度,性能好
    • HTTP调度:302调度做基于内容和精准IP的精确调度,性能差
      一半CDN业务中,DNS调度和HTTP调度相结合。

    五、Cache缓存

    除调度外,Cache缓存很重要,它用于将内容缓存到CDN边缘节点。这样当第二个人在同一节点访问相同内容时,不用经过CDN链路到源站去取。
    对Cache系统来说,有两种不同的工作状态:命中(hit)和没有命中(miss)

    六、安全问题

    在没有做CDN之前你的网站很有可能会遭受到各种各样的攻击。作为CDN来讲,就已经将你的原始服务器的IP进行了隐藏。比较安全

    参考:

    说说CDN技术:http://bbs.qcloud.com/forum.php?mod=viewthread&tid=3776&extra=page%3D1
    CDN技术原理:http://network.51cto.com/art/200704/45928.htm
    CDN四大关键技术:http://www.idcquan.com/CDN/720016.html

    相关文章

      网友评论

        本文标题:CDN(Content Delivery Network)技术原

        本文链接:https://www.haomeiwen.com/subject/dymuyxtx.html