content delivery network 内容分发网络
CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术
本文参考
b什么是CDN?CDN能为我们做什么?我们为什么要了解他?_哔哩哔哩_bilibili
内容分为 静态内容和动态内容
例如长期不改变的图标
源服务器 发送文件 给cdn 的时候可以利用HTTP头部的 cache-conter
cache-conter 可以设置文件的缓存形式 cdn 就可以知道那些内容缓存那些不缓存 缓存多久等
情况1(CDN已经备份的情况):
CDN分发内容的流程
首先CDN是没有网站的源内容
源服务器就会把静态内容提前备份给CDN(这步叫push)
那么世界各地用户在访问网站的时候就会把静态内容提供给用户
1.源服务器 发送 静态文件 CDN
2.用户发送请求 到CDN
3.CDN将请求内容 返回用户
情况2(CDN没有备份的情况):
1.用户先发送请求到CDN
2.CDN向源服务器pull(拉)数据
3.在返回给用户(那么其他用户在向CDN的时候就不用在向源服务器进行pull)
那么动态内容怎么解决
如果让源服务器一直提供动态内容(例如时间)如果网络不稳定就没办法同步
CDN会在提供一下CDN接口(不是源服务器自己的代码,那么就是从CDN获取时间而不是源服务器)
CDN无形中给服务器加了一道墙不用担心恶意攻击
(负载均衡 目的就是平均分配流量)
那么就会攻击CDN CDN就被分别在世界各地 监控CDN 的负载情况 如果某台服务器超载了就把用户请求转移到没有超载的CDN上
如何转移CDN流量呢 方法类似于CDN域名解析服务器
采用了任播的技术:让服务器对外都有同一个IP,当用户请求就有里用户最近的服务器来响应
CDN还会采用TLS/SSL证书进行网站保护
CDN 也叫加速器
加速有很多种方法,CDN就会进行代码压缩或者文件最小化 例如:省略不必要的字符像空格之类的
CDN自身也会优化自己的硬件和软件