本文主要是介绍Content Delivery Network,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 1 科普定义
CDN(Content Delivery Network,内容分发网络)是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容。CDN服务缩短了用户查看内容的访问延迟,提高了用户访问网站的响应速度与网站的可用性,解决了网络带宽小、用户访问量大、网点分布不均等问题。
云CDN将源站资源缓存到遍布全球的加速节点上,当终端用户访问资源时,无需回源,CDN通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的CDN节点IP地址提供给用户,使用户可以以最快的速度获得网站内容。
-
其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。类似分布各地的物流仓储网络,CDN网络可以将源站的内容缓存到分布全球的CDN节点,根据用户的访问IP,就近连接CDN,提高网站响应速度。
-
鸡蛋放在多个篮子里,把数据放在离用户更近的位置(例如网站的一些静态文件好比图片或者js脚本),用户访问时判断IP来源是广州,那就经过智能DNS解析到广州的服务器上,直接从广州的篮子里去获取数据,速度就快了。这里有个静态数据和动态数据的概念,例如图片和一些js文件通常是不变的,那就能够把它们的映像分布到全国各地,加快速度,而一些须要在网站后台动态产生的一些数据,则须要去到网站所在的服务器去产生并获得。这个涉及到两种数据的显示的问题,这就交由浏览器处理了。同时异步加载的技术例如前端的Ajax技术,异步请求数据,可使这些动态数据延迟加载。
1.2 原理
没有 CDN 的请求路径
在没有 CDN 的情况下,一次资源请求的路径是什么样子的呢。
1、首先用户在浏览器输入域名,比如进入天猫主页;
2、用户所在的电脑查询 hosts 中看是否有对应的 IP ,如果有就直接请求 IP;
3、如果没有在本地缓存,则向本地 DNS 发起请求,本地 DNS 查找域名对应的 IP(一般是 A 记录);
4、如果本地 DNS 没有找到,则向上级 DNS 服务器请求,一级一级的知道查到最顶级 DNS 服务器;
5、向找到的域名对应的 IP 发起请求;
6、资源所在的集群向客户端返回请求的资源,比如图片、样式文件、视频文件等;
有了 CDN 之后
当有了 CDN 接入之后,事情就稍微变得复杂了一点。
1、用户在浏览器输入域名,比如进入天猫主页;
2、用户所用的电脑向本地 DNS 服务器请求,查询域名的IP地址;
3、本地 DNS 服务器中如果缓存有这个域名的记录,则直接响应用户的解析请求,否则本地DNS向根DNS 查询域名的授权服务器;
4、根DNS将域名授权DNS记录返回给本地DNS;
5、本地 DNS 得到域名的授权DNS记录后,继续向域名授权DNS查询域名的IP地址;
6、域名授权DNS查询域名记录后(一般是CNAME),返回给本地DNS;
7、本地DNS得到域名记录后,向智能DNS查询域名的IP地址;
8、智能DNS根据一定的算法和策略(比如静态拓扑,容量等),将最合适的CDN节点IP地址返回给 本地DNS;
9、本地DNS将得到的域名IP地址,返回给用户终端;
10、用户得到域名IP地址后,访问站点服务器;
11、CDN节点服务器应答请求,将内容返回给客户端,CDN服务器同时在本地进行保存,以备下次使用。
下面的流程图画出了整个请求过程。
1.3 效果
- 1、本地Cache加速,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高以上性质站点的稳定性;
- 2、镜像服务消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量;
- 3、远程访问用户根据DNS负载均衡技术,智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度;
- 4、带宽优化:自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能;
- 5、集群抗攻击:广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种DDos攻击对网站的影响,同时保证较好的服务质量 。
2、基本概念
-
加速域名
加速域名是用户提供的需要使用CDN加速服务的域名,域名是便于记忆和沟通的一组服务器的地址,应用于网站,电子邮件,FTP等。 -
CNAME记录
CNAME记录是指域名解析中的别名记录(Canonical Name),允许将多个域名映射到同一个域名。
例如:
有一台服务器存放了一些文件,可以通过file.example.com访问该资源,但是希望通过另一个域名data.example.com也能访问。
那么您可以在DNS解析服务商处新增一条CNAME记录,将data.example.com指向file.example.com。
添加CNAME记录后,所有访问data.example.com的请求就会指向file.example.com,获得相同内容。 -
CNAME域名
用户在管理控制台添加加速域名后,系统会为加速域名分配一个对应的“CNAME域名”(域名形式为:.c.cdnhwc1.com)。用户需要在域名服务商处,配置一条CNAME记录,将自己的域名作CNAME指向这个.c.cdnhwc1.com的域名,记录生效后,域名解析的工作就正式转向CDN服务,该域名所有的请求都将转向CDN节点,达到加速效果。 -
源站
源站指用户的业务服务器,即被加速分发数据的来源。 -
DNS
TCP/IP网络中的功能实体,通过该服务器,用户只通过域名就可以访问对应的服务器。在TCP/IP网络中域名与IP地址一一对应,域名便于记忆,但网络中的服务器间只能通过IP地址相互识别,域名和IP地址之间的转换称为域名解析,域名解析需要通过专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
例如:访问xxx.abc.com会通过DNS转换成220.xxx.xxx.xxx(IP地址)。 -
边缘节点
边缘节点也称CDN节点、Cache节点等,指距离最终用户接入具有较少的中间环节的网络节点,对最终接入用户有较好的响应能力和连接速度。 -
回源
CDN节点未缓存资源或者缓存资源已到期时,节点会回源站获取资源,返回给客户端。
例如:访问某个URL,如果解析到CDN节点未缓存该资源,则访问请求会直接到源站获取资源,并根据URL请求返回。 -
回源HOST
源站决定了回源时,请求到源站的IP地址。回源HOST决定回源请求访问到该IP地址的哪个站点。
例1:源站为域名时,源站为www.xxx.com,回源HOST为www.abc.com,实际回源的是www.xxx.com解析到的IP站点www.abc.com。
例2:源站为IP地址时,源站为1.1.1.1,回源HOST为www.abc.com,实际回源的是1.1.1.1对应主机上的站点www.abc.com。 -
SSL/TLS
SSL(Secure Sockets Layer,安全通讯协议),是一个构架于TCP之上的安全套接层,是为网络通信提供安全及数据完整性的一种安全协议。标准化之后的SSL名称为TLS(Transport Layer Security,传输层安全协议)。 -
过滤参数
根据业务需要判断是否启用该项配置,对用户请求URL中“?”之后的参数进行过滤。
不启用:CDN节点回源时,将按照用户请求URL回源,完成用户访问请求后,会根据URL的不同参数保存不同的缓存资源。当用户再次访问该URL时,会根据“?”后参数提供对应的内容。
启用:CDN节点回源时,只截取没有参数的请求URL回源,完成用户访问请求后,仅保存一份缓存资源。当用户再次访问该URL时,只能返回当前一份缓存资源,无法按照“?”后参数进行区分。
3、 Q & A
- https://support.huaweicloud.com/cdn_faq/cdn_faq_0006.html
- CDN加速是对网站所在服务器加速,还是对其域名加速?
- CDN是只对网站的某一个具体的域名加速。如果同一个网站有多个域名,则访客访问加入CDN的域名获得加速效果,访问未加入CDN的域名,或者直接访问IP地址,则无法获得CDN效果。
- CDN和镜像站点比较有何优势?
- CDN对网站的访客完全透明,不需要访客手动选择要访问的镜像站点,保证了网站对访客的友好性。
CDN对每个节点都有可用性检查,不合格的节点会第一时间剔出,从而保证了极高的可用率,而镜像站点无法实现这一点。
CDN部署简单,对原站基本不做任何改动即可生效。
- CDN和双线机房相比有何优势?
- 常见的双线机房只能解决网通和电信互相访问慢的问题,其它ISP(譬如教育网,移动网,铁通)互通的问题还是没得到解决。
而CDN是访问者就近取数据,而CDN的节点遍布各ISP,从而保证了网站到任意ISP的访问速度。另外CDN因为其流量分流到各节点的原理,天然获得抵抗网络攻击的能力。
- CDN使用后,原来的网站是否需要做修改,做什么修改?
- 一般而言,网站无需任何修改即可使用CDN获得加速效果。只是对需要判断访客IP程序,才需要做少量修改。
- 为什么我的网站更新后,通过CDN后看到网页还是旧网页,如何解决?
- 由于CDN采用各节点缓存的机制,网站的静态网页和图片修改后,如果CDN缓存没有做相应更新,则看到的还是旧的网页。
为了解决这个问题,CDN管理面板中提供了URL推送服务,来通知CDN各节点刷新自己的缓存。
在URL推送地址栏中,输入具体的网址或者图片地址,则各节点中的缓存内容即被统一删除,并且当即生效。
如果需要推送的网址和图片太多,可以选择目录推送,输入 http://www.kkk.com/news 即可以对网站下news目录下所有网页和图片进行了刷新。
- 能不能让CDN不缓存某些即时性要求很高的网页和图片?
- 只需要使用动态页面,asp,php,jsp等动态技术做成的页面不被CDN缓存,无需每次都要刷新。或者采用一个网站两个域名,一个启用CDN,另外一个域名不用CDN,对即时性要求高的页面和图片放在不用CDN的域名下。
- 网站新增了不少网页和图片,这些需要使用URL推送吗?
- 后来增加的网页和图片,不需要使用URL推送,因为它们本来就不存在缓存中。
- 网站用CDN后,有些地区反映无法访问了,怎么办?
- CDN启用后,访客不能访问网站有很多种可能,可能是CDN的问题,也可能是源站点出现故障或者源站点被关闭,还可能是访客自己所在的网络出现问题,甚至实际故障排除中,还出现过客户自己计算机中毒,导致无法访问网站。
这篇关于Content Delivery Network的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!