一、什么是CDN
CDN的全称为内容分发网络(Content Delivery Network),它的核心思路是在现有互联网架构里新增一层缓存节点,把站点资源部署到距离用户最近的网络边缘位置,让用户能就近获取所需内容,大幅提升站点访问的响应速度。从技术层面彻底解决了网络带宽不足、用户访问量集中、跨区域网点分布不均等问题,最终实现访问提速的效果。
简单来说,CDN的运行逻辑是把源站的各类资源提前缓存到遍布全球的CDN节点上,用户发起资源请求时,直接从就近的节点调取已缓存的内容,不用所有请求都回源站获取,既能规避网络拥堵问题,也能减轻源站的承载压力,保障用户访问资源的流畅度与使用体验。
CDN节点
- CDN对网络的优化作用主要体现在这些维度:
- 解决服务器侧的“首段传输”难题
- 削弱甚至消除不同运营商之间互联互通的瓶颈制约
- 降低各省份的出口带宽占用压力
- 缓解骨干网络的传输负载
- 优化全网热点内容的分发效率
二、CDN运行逻辑
常规未接入CDN的站点访问流程
- 用户访问未部署CDN缓存的站点时,完整流程如下:
- 用户输入目标域名,设备向本地DNS服务器发起域名IP地址的查询请求
- 若本地DNS的缓存已过期,它会向根域名服务器查询该域名的授权解析地址
- 根域名服务器将该域名的授权DNS记录返回给本地DNS
- 本地DNS拿到授权DNS信息后,继续向其查询域名对应的IP地址
- 域名授权DNS检索到对应记录后,将IP地址反馈给本地DNS
- 本地DNS把解析得到的IP地址传回用户设备
- 用户拿到IP地址后,直接向站点服务器发起访问请求
- 站点服务器响应请求,将所需内容回传给用户端
接入CDN后的站点访问流程
部署CDN缓存服务后,用户的站点访问流程会变为:
- 用户输入目标域名,设备向本地DNS服务器发起域名IP地址的查询请求
- 若本地DNS的缓存已过期,它会向根域名服务器查询该域名的授权解析地址
- 根域名服务器将该域名的授权DNS记录返回给本地DNS
- 本地DNS拿到授权DNS信息后,继续向其查询域名对应的IP地址
- 域名授权DNS检索到对应记录后(通常为CNAME别名地址),将结果反馈给本地DNS
- 本地DNS获取到该别名记录后,向CDN的智能调度DNS发起节点IP查询
- 智能调度DNS结合预设的算法与策略(比如地理位置匹配、节点负载情况等),将最适配的CDN节点IP地址返回给本地DNS
- 本地DNS把解析得到的节点IP地址传回用户设备
- 用户拿到IP地址后,向对应的CDN节点服务器发起访问请求
- CDN节点服务器响应请求,将所需内容回传给用户端。缓存服务器一方面会在本地留存该内容,方便后续同类请求快速响应,另一方面把获取到的资源直接返回给用户,完成整个数据交互流程。
通过上述流程可以看出,要实现对普通用户完全无感知的透明访问(用户侧无需做任何额外设置),借助DNS域名解析机制引导用户访问缓存服务器,是最简便高效的实现方式。由于用户访问站点的第一步就是域名解析操作,通过调整DNS解析规则来引导流量走向,是成本最低且效果最直接的方案。
CDN网络的核心组成部分
对普通互联网用户而言,每一个CDN节点就相当于部署在用户周边的站点服务器。通过对DNS解析流程的接管,用户的请求会被无感知地导向距离自己最近的节点,该节点内的CDN服务器会像站点原始服务器一样,正常响应用户的访问需求。因为物理距离离用户更近,响应速度自然会大幅提升。
上述流程里用虚线圈出的部分就是CDN服务层,这一层处于用户设备和源站服务器之间。
- 智能调度DNS
智能调度DNS是CDN服务的核心系统。当用户访问接入了CDN的站点时,最终的域名解析请求会交由“智能调度DNS”处理。它会按照预先设定的规则,把当下距离用户最近的节点地址推送出去,让用户获得极速的访问体验。同时它会和分布在各地的CDN节点保持实时通信,同步各节点的运行状态、承载容量等信息,确保能把用户请求分配到就近且可用的节点上。
- 缓存服务模块
包含负载均衡设备(比如LVS、F5的BIG-IP产品)、内容缓存服务器(比如Squid)、共享存储组件。
三、相关术语释义
CNAME记录
CNAME即别名记录(Canonical Name),作用是把一个域名指向另一个域名。当DNS系统检索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服务商的控制台添加完加速域名后,平台会自动分配一个专属的CNAME域名。你需要在自己的DNS解析服务商处新增一条CNAME记录,把待加速的域名指向这个分配得到的CNAME域名,这样该域名的所有访问请求才会全部流转到CDN节点,最终实现加速效果。
DNS
DNS即域名系统,是域名解析服务的统称。它在互联网中的核心作用是把便于人类记忆的域名,转换为网络设备能识别的IP地址。人们习惯记忆字符形式的域名,但服务器之间的通信只能通过IP地址完成,域名和IP地址是一一对应的关系,二者之间的转换操作就叫域名解析,这个过程由专门的域名解析服务器自动完成。比如你上网输入www.baidu.com时,系统会自动把它转换为220.181.112.143这类IP地址。
市面上常见的DNS解析服务商有阿里云解析、万网解析、DNSPod、新网解析、AWS Route53、Dyn、Cloudflare等。
回源Host
回源Host决定了回源请求最终会定位到源站上的具体站点。
示例1:源站为域名形式,源站地址是www.a.com,回源Host设置为www.b.com,那么实际回源操作会先解析www.a.com得到对应IP,再访问该IP地址对应的服务器上的www.b.com站点。
示例2:源站为IP形式,源站地址是1.1.1.1,回源Host设置为www.b.com,那么实际回源操作会直接访问1.1.1.1这台服务器上的www.b.com站点。
协议回源
指CDN节点回源获取资源时使用的协议,和用户侧发起访问请求的协议保持一致。如果用户通过HTTPS方式请求资源,当CDN节点本地没有缓存该内容时,节点会采用相同的HTTPS协议向源站请求资源;同理如果用户是通过HTTP协议发起请求,CDN节点回源时也会沿用HTTP协议。
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/aesa/zgdljs/3016.html
