CDN(一)基础知识

一  CDN

该篇文章的'背景': 

  1) 但是'CDN'在业务中'承载'着很重要的角色,值得'探究',本文仅做'记录'

  2) 本文'穿插'阿里和华为云的CDN知识,可以作为'CDN'入门的'普适性'文章

①  CDN的简介

CDN(一)基础知识_第1张图片

阿里云CDN官方文档  华为云CDN官方文档

②  CDN的术语

重点: '源站'、'CDN节点'、'加速域名'、'CNAME域名'、'终端用户'

终端用户: 就是'client'

CDN(一)基础知识_第2张图片

CDN(一)基础知识_第3张图片

CDN(一)基础知识_第4张图片

③  CDN网络

IDC建立CDN网络,'IDC运营商'一般需有分布各地多个IDC数据中心,'服务对象'是托管在IDC中心的客户

  备注1: 华为云'似乎'用的是'阿里'的CDN

  备注2: 云厂商一般不会自建'IDC'组建CDN网络,成本太高,会利用现有的'网络资源'

  备注3: 大厂会有专门的'CDN网络运维团队'进行支撑,保证信息正常传输,维护'CDN网络'稳定

④  CDN的本质

1) CDN网络是在'用户'和'源站服务器'之间增加了'Cache层'

2) 通过'DNS接管(智能DNS)'实现将'用户的请求'引导到'Cache'上获得'源服务器'的数据

3) CDN本质是一种'良性的'DNS劫持

4) CDN依赖的是'云厂商智能DNS就近'接入能力,也即'最佳解析ip'的调度

5) 提升'客户'的体验感

 CDN业务内常见有DNS域名劫持和HTTP内容劫持   流量劫持

③  CDN使用的DNS

+++++++++++++++  "域名解析的细节"  +++++++++++++++

1) 作为'ICP',只需要把'域名解释权'交给'CDN运营商',其他方面'不需要'进行任何修改

  操作: ICP修改自己域名的解析记录,一般CNAME方式指向CDN网络'Cache服务器的地址'

2) 作为'CDN运营商'

  [1]、首先需要需要为'ICP的'域名提供'公开'的解析

  [2]、为了实现sortlist,一般是把ICP的域名'解释结果'执行一个CNAME记录

3) 当需要进行'sortlist'时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行'特殊'处理

4) 使DNS服务器在接收到客户端的请求时可以根据'客户端的ip地址',返回相同域名的'不同'ip地址

5) CDN运营商'内部'的DNS

  [1]、由于从CNAME获得的'cache ip'地址,并且带有'Host'信息

  [2]、请求到达Cache之后,Cache必须知道'源服务器'的ip地址,不然怎么'回源'

  [3]、所以在CDN运营商内部'维护'一个内部DNS服务器,用于解释用户所访问域名的'真实ip'地址

  [4]、在维护内部DNS服务器时,还需要维护一台'授权'服务器

   特点: 控制'哪些域名'可以进行缓存,哪些'不能'进行缓存,避免发生'开放代理'的问题

 ++++++++++++++++  为什么CDN厂商'都使用CNAME'   ++++++++++++++++

背景: 为了实现既要对'普通用户透明',又要在为'指定的网站'提供加速服务的同时'降低'对ICP的影响

即:加入缓存以后,'用户在客户端'无需进行任何设置,直接'使用被加速网原有的域名'即可访问

实现: 只需要修改整个访问过程中的'域名解析'部分,可以实现'透明'的加速访问,'用户无感知'

④  CDN的调度原理 

(1) 访问使用'CDN缓存'后的网站过程

  [1]、用户通过'浏览器'发出请求,假定使用'加速域名访问'

  [2]、浏览器调用'LDNS(本地域名解析库)'对域名解析

  备注: 浏览器DNS缓存、操作系统DNS缓存、本地hosts、/etc/resolv.conf的优先级

  [3]、由于CDN云厂商的'DNS劫持',所以解析库得到的是'原始域名'对应的'CNANE'记录

  备注: 需要用户'自己'配置这个'CNAME'

  [4]、之后浏览器再次对获得的CNAME域名进行解析得到实际的'CDN边缘节点的Cache缓存服务器'ip

  备注1: 浏览器'访问'F12可以看到这个'ip'
  
  备注2: 这个'ip'对于不同用户可能'不一样',由'CDN厂商内部自有算法计算出'

  [5]、在此过程中,使用'全局负载均衡DNS(GSLB或智能DNS)'解析

  备注: 如根据'地理位置'信息解析对应的ip,使得用户能就近访问

  [6]、本次解析得到'CDN缓存服务器的ip地址',向'该缓存服务器'发出访问请求

  [7]、如果'Cache服务器'没有数据,则缓存服务器从'实际的ip地址(源站)'得到内容后

     (1) 一方面在'本地进行(Cache服务器)'保存,以备'后续请求'使用

     (2) 另一方面'把获取的数据'返回给客户端,完成数据服务过程

  [8]、客户端得到'由缓存服务器返回的数据'以后显示出来并完成整个浏览的数据请求过程

  细节点: 使用了'CDN'之后,用户获取的数据一定是从'缓存服务器'获取的,除非'DNS'解析有问题

⑤  CDN回源的行为

++++++++++  "回源的术语"  ++++++++++

​1) 回源、'源站'、'回源HOST'、回源协议、回源率、'回源SNI'、'回源协议'

备注: 如果理解'缓存'和'nginx'的代理特性,很好'理解'这几个概念

2) 回源本质:缓存服务器节点没有资源,向'源站'发送了一次请求,CDN云厂商可以'改变'请求'行为'

个人理解: HTTP'参数'的劫持

3) 思考: '加速域'名、'源站'、'回源HOST'三者必须一致吗?

4) 清楚: CDN的'默认'行为,有时我们是'不需要'的,需要自己进行'策略'改变

CDN(一)基础知识_第5张图片

CDN(一)基础知识_第6张图片

+++++++++ CDN的配置'回源HOST'与'源站'的区别 +++++++++

CDN(一)基础知识_第7张图片

⑥  CDN的应用场景

说明: 当前只是'粗略'的了解'CDN'应用场景

28比例:超过'80%的用户'经常访问的是'20%网站'的内容

⑦  CDN用的技术栈

1)CDN用的'技术栈'

  [1]、DNS           --> 'GSLB' --> "A、CNAME"记录,以及'客户端侧'影响解析的'因素'

  [2]、HTTP知识       --> 各种'元数据[Range、缓存等]'头、'nginx的知识[slice、代理]'

  [3]、缓存和鉴权的知识 --> '通过nginx来学习'

2) 题外话: 可以使用'varnish+squid' 和'nginx'进行'CDN模拟'

CDN对Content-Type的处理

CDN(一)基础知识_第8张图片

⑧  CDN编程

CDN(一)基础知识_第9张图片

阿里云CDN的边缘脚本  边缘程序EdgeRoutine

⑨  相关参考 

CDN的实现原理

CDN之我见的三个系列

使用阿里云CDN常见的FAQ  华为云华存配置的FAQ  华为云回源相关的FAQ

CDN的实现原理

你可能感兴趣的:(CDN,Cache,DNS)