3分钟带你了解到底什么是CDN?
CDN详解:从基础到核心技术
CDN的全称是Content Delivery Network,即内容分发网络。它是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,从而降低网络拥塞,提高用户访问响应速度和命中率。
CDN的关键技术主要包括内容存储和分发技术,其属性是一种新型网络构建方式,目的是让内容传输得更快、更稳定。
CDN的基本原理
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器,由该缓存服务器直接响应用户请求。
CDN的基本思路是尽可能避开互联网上可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输更快、更稳定。它通过在网络各处放置节点服务器,在现有互联网基础上构成一层智能虚拟网络。CDN系统能实时根据网络流量、各节点的连接和负载状况、到用户的距离及响应时间等综合信息,将用户的请求重新导向离用户最近的服务节点。其目的是让用户就近获取所需内容,解决Internet网络拥挤问题,提高用户访问网站的响应速度。
简单来说,CDN就是一个分布式的缓存服务器,存储着大量文件,且分布在世界各地,用户都能就近访问。
CDN的工作过程
传统访问过程
用户访问未使用CDN缓存的网站时,过程如下:
用户输入访问的域名,操作系统向LocalDns查询域名的IP地址。
LocalDns向ROOT DNS查询域名的授权服务器(假设LocalDns缓存过期)。
ROOT DNS将域名授权DNS记录回应给LocalDns。
LocalDns得到域名的授权DNS记录后,继续向域名授权DNS查询域名的IP地址。
域名授权DNS查询域名记录后,回应给LocalDns。
LocalDns将得到的域名IP地址回应给用户端。
用户得到域名IP地址后,访问站点服务器。
站点服务器应答请求,将内容返回给客户端。
CDN访问过程
使用了CDN缓存后的网站访问过程变为:
用户输入访问的域名,操作系统向LocalDns查询域名的IP地址。
LocalDns向ROOT DNS查询域名的授权服务器(假设LocalDns缓存过期)。
ROOT DNS将域名授权DNS记录回应给LocalDns。
LocalDns得到域名的授权DNS记录后,继续向域名授权DNS查询域名的IP地址。
域名授权DNS查询域名记录后(一般是CNAME),回应给LocalDns。
LocalDns得到域名记录后,向智能调度DNS查询域名的IP地址。
智能调度DNS根据一定的算法和策略(如静态拓扑、容量等),将最适合的CDN节点IP地址回应给LocalDns。
LocalDns将得到的域名IP地址回应给用户端。
用户得到域名IP地址后,访问CDN节点服务器。
CDN节点服务器应答请求,将内容返回给客户端(缓存服务器一方面在本地保存内容以备后续使用,另一方面将获取的数据返回给客户端,完成数据服务过程)。
通过以上分析可知,为实现对普通用户透明的访问(使用缓存后用户客户端无需任何设置),需要利用DNS(域名解析)引导用户访问Cache服务器,这是最简单有效的方式。因为用户访问网站的第一步是域名解析,所以通过修改DNS来引导用户访问十分便捷。
CDN的组成
如同仓配网络由多个仓库组成,内容分发网络(CDN)由多个节点构成。一般来说,CDN网络主要由中心节点和边缘节点两部分组成。
中心节点
中心节点包括CDN网管中心和全局负载均衡DNS重定向解析系统,负责整个CDN网络的分发及管理。
边缘节点
CDN边缘节点主要指异地分发节点,由负载均衡设备和高速缓存服务器两部分组成。
负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时收集节点与周围环境的信息,保持与全局负载均衡DNS的通信,实现整个系统的负载均衡。
高速缓存服务器(Cache)负责存储客户网站的大量信息,像靠近用户的网站服务器一样响应本地用户的访问请求。
通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中的Cache服务器如同网站的原始服务器,响应终端用户的请求。因其距离用户更近,响应时间更快。
可以说,中心节点就像仓配网络中负责货物调配的总仓,而边缘节点则是负责存储货物的各个城市的本地仓库。
CDN相关技术
建设庞大的CDN网络需要考虑多种技术问题,主要包括以下方面:
缓存算法
缓存代理软件有Squid。缓存算法决定命中率、源服务器压力以及FTP节点存储能力。
分发能力
分发能力取决于IDC能力和IDC策略性分布。
负载均衡
负载均衡软件有Nginx。负载均衡(智能调度)决定最佳路由、响应时间、可用性和服务质量。
基于DNS
DNS服务器软件有BIND。
基于DNS的负载均衡以CNAME实现域名中转,获取最优节点服务。
缓存点包括客户端浏览器缓存、本地DNS服务器缓存。
缓存内容包括DNS地址缓存、客户请求内容缓存、动态内容缓存。
支持协议
支持的协议包括静动态加速(图片加速、https带证书加速)、下载加速、流媒体加速、企业应用加速、手机应用加速等。
内容发布
借助建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)。
内容存储
对于CDN系统,需要考虑两方面的内容存储问题:一是内容源的存储,二是内容在Cache节点中的存储。
内容路由
这是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,使用户请求得到最近内容源的响应。
内容管理
通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳运行状态。
CDN相关名词
CNAME记录(CNAME record)
CNAME即别名(Canonical Name),可用于将一个域名解析到另一个域名。当DNS系统查询CNAME左面的名称时,会转向CNAME右面的名称再进行查询,一直追踪到最后的PTR或A名称,成功查询后才会做出回应,否则失败。
例如,若一台服务器上存放了很多资料,使用docs.example.com可访问这些资源,若希望通过documents.example.com也能访问,可在DNS解析服务商添加一条CNAME记录,将documents.example.com指向docs.example.com。添加后,所有访问documents.example.com的请求都会转到docs.example.com,获得相同内容。
CNAME域名
接入CDN时,在CDN提供商控制台添加完加速域名后,会得到一个CDN分配的CNAME域名。需在DNS解析服务商添加CNAME记录,将自己的加速域名指向该CNAME域名,这样该域名的所有请求才会转向CDN的节点,达到加速效果。
DNS
DNS即Domain Name System,是域名解析服务。它在互联网中的作用是将域名转换为网络可识别的IP地址。
人们习惯记忆域名,但机器间只认IP地址,域名与IP地址一一对应,二者的转换工作称为域名解析,由专门的域名解析服务器自动完成。
比如,上网时输入的www.baidu.com会自动转换为220.181.112.143。
常见的DNS解析服务商有:阿里云解析、万网解析、DNSPod、新网解析、Route53(AWS)、Dyn、Cloudflare等。
回源host
回源host决定回源请求访问到源站上的具体某个站点。
例子1:源站是域名源站为www.a.com,回源host为www.b.com,那么实际回源是请求到www.a.com解析到的IP对应的主机上的站点www.b.com。
例子2:源站是IP源站为1.1.1.1,回源host为www.b.com,那么实际回源的是1.1.1.1对应的主机上的站点www.b.com。
协议回源
指回源时使用的协议和客户端访问资源时的协议保持一致。即如果客户端使用HTTPS方式请求资源,当CDN节点上未缓存该资源时,节点会使用相同的HTTPS方式回源获取资源;同理,如果客户端使用HTTP协议请求,CDN节点回源时也使用HTTP协议。