cdn
1、CDN工作
- 打开某个网站的时候,浏览器发送网址到相应的DNS服务器进行解析,解析出对应的IP地址返回给浏览器,让它去IP地址的服务器上获取相应的网站文件。
- 当给一个域名开通了CDN,要先给域名的DNS解析设置的后台添加一条CDN专用的解析记录,这条解析记录会让域名被解析之后,指向一个CDN网络专用的处理DNS请求的服务器
- 这个专门的CDN网络的DNS服务器会给浏览器返回一台负载均衡系统服务器(专门用来给各个请求设备分配合适的CDN服务器的这样一种服务器)的IP地址
- 浏览器会去访问这台负载均衡系统服务器,均衡系统服务器会根据你浏览器的网络地址在CDN网络中找一台在各种条件下都比较适合给你的设备提供服务的一台服务器,把这台CDN服务器的IP地址返回给你的浏览器
- 浏览器收到这个IP地址之后就会去访问CDN网络中的这台CDN服务器,请求网站的文件资源
2、CDN拉取资源
- 在为某个网址/域名开通CDN服务的时候,一开始通过CDN后台进行设置,告诉CDN网络该域名的原始服务器的IP地址(源站的IP)
- 一台被请求网络文件的CDN服务器在收到浏览器的获取请求之后,如果发现自己这里并没有相关缓存的网站文件,就会去CDN网络中的上层缓存服务器中拉取,上一层还没有会继续向上找,最后会到网站的源站去拉取(pull)
- 源服务器发送文件给CDN的时候就可以利用HTTP头部的cache-control(no-cache,no-store,max-age...),设置文件缓存的形式,CDN可以知道哪些资源可以保存,哪些不能,要保存多久
- 源服务器会把静态内容提前备份给CDN(push),如果没有提前备份,到2
- CDN提供部分动态内容服务,比如时间,有些CDN会提供可以运行在CDN上的接口。
- 动态cdn通常是在cdn节点之间用私有网络和私有协议进行数据交换,安全性会变差但响应时间也会比在公网传输快些,毕竟BGP也是有损耗的。
3、负载均衡的实现
一般是dns做调度,来决定实际流量走到哪台服务器
使用任播的技术(国内好像不给用)
- 服务器对外都拥有同样的一个IP地址,这个IP地址收到用户的请求以后,请求就会由距离用户最近的服务器来响应