参考:https://cloud.tencent.com/developer/article/2090707
https://blog.csdn.net/weixin_40381947/article/details/131409507
CDN
- CDN的全称是Content Delivery Network,即内容分发网络。
- CDN是Content Delivery Network(内容分发网络)的缩写,是一种利用分布式节点技术,在全球部署服务器,即时地将网站、应用、视频、音频等静态或动态资源内容分发到用户所在的最近节点,提高用户访问这些内容的速度和稳定性,降低网络拥塞和延迟,同时也能够减轻源站的负载压力,提升网站或应用的可用性和安全性。
CDN主要作用
- 加速内容传输:CDN 在全球范围内部署了多个服务器节点,将网站的静态资源和动态内容缓存到靠近用户的边缘服务器上。这样,当用户请求访问网站时,可以从最近的边缘服务器获取内容,减少了传输延迟和网络拥塞,提高了页面加载速度。
- 减轻源服务器负载:CDN 的边缘服务器能够缓存和提供网站内容的副本,当用户请求访问时,不必每次都访问源服务器。这有效减轻了源服务器的负载压力,提升了整体的性能和可扩展性。
- 提高全球访问速度:由于 CDN 在全球各地都有服务器节点,通过智能的路由选择,用户可以从最近的边缘服务器获取内容,大大减少了数据在互联网上的传输距离和时间,从而提高了全球用户的访问速度和响应时间。
- 增强网站的稳定性和可靠性:CDN 具备容错和冗余机制,如果某个边缘节点出现故障,请求会自动切换到其他可用的节点上。这种冗余机制提高了网站的稳定性和可用性,防止单点故障导致整个系统不可用。
- 抵御DDoS攻击:CDN 可以提供一定程度的分布式拒绝服务(DDoS)攻击防护能力。由于 CDN 分散了流量并具备弹性扩展能力,可以对来自恶意请求的攻击进行过滤和缓解,确保正常用户访问不受干扰。
- 降低成本:通过CDN可以降低带宽和服务器的成本,提高用户体验的同时,降低网站运营成本。
基本原理
- 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 节点服务器应答请求,将内容返回给客户端。(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)
通过以上的分析我们可以得到,为了实现对普通用户透明(使用缓存后用户客户端无需进行任何设置)访问需要使用 DNS(域名解析)来引导用户来访问 Cache 服务器,以实现透明的加速服务。由于用户访问网站的第一步就是域名解析,所以通过修改dns来引导用户访问是最简单有效的方式。
CDN组成
- CDN网络主要由中心节点、边缘节点两部分构成。
中心节点
- 中心节点包括CDN网管中心和全局负载均衡DNS重定向解析系统,负责整个CDN网络的分发及管理。
边缘节点
- CDN边缘节点主要指异地分发节点,由负载均衡设备、高速缓存服务器两部分组成。
- 负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时还负责收集节点与周围环境的信息,保持与全局负载均衡DNS的通信,实现整个系统的负载均衡。
- 高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。
- 通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中Cache服务器就像网站的原始服务器一样,响应终端用户的请求。因其距离用户更近,故其响应时间才更快。
- 中心节点就像仓配网络中负责货物调配的总仓,而边缘节点就是负责存储货物的各个城市的本地仓库。
CDN相关技术
缓存算法
缓存代理软件:Squid。 缓存算法决定命中率、源服务器压力、FTP节点存储能力。
分发能力
分发能力取决于IDC能力和IDC策略性分布。
负载均衡
负载均衡软件:Nginx。 负载均衡(智能调度)决定最佳路由、响应时间、可用性、服务质量。
基于DNS
DSN服务器软件:BIND
- 基于DNS的负载均衡以CNAME实现域名中转,智取最优节点服务。
- 存点有客户端浏览器缓存、本地DNS服务器缓存。
- 缓存内容有DNS地址缓存、客户请求内容缓存、动态内容缓存。