issues
search
shoutingwei
/
frontend-learning
0
stars
0
forks
source link
CDN的实现原理?
#23
Open
shoutingwei
opened
6 years ago
shoutingwei
commented
6 years ago
传统方式
用户向浏览器提供要访问的域名。
浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址。
(在何处进行,函数库从何而来)
浏览器使用所得到的IP地址,向域名的服务器发出数据请求。
浏览器根据返回数据显示内容。
CDN方式
用户向浏览器提供要访问的域名
浏览器调用域名库进行解析,由于CDN对域名解析过程做了调整,所以域名解析得到其对应的CNAME记录。再次对CNAME进行域名解析可以得到实际IP。在此过程中,使用全局负载均衡DNS解析,如果能根据地理位置解析,就能就近访问。
解析得到CDN缓存服务器ip地址,向缓存服务器发出请求。
缓存服务器根据浏览器提供的要访问的域名解析得到实际ip地址,再由缓存服务器向此ip发出请求。
缓存服务器获取内容后一方面本地保存,另一方面返回给浏览器。
客户端得到缓存服务器返回的数据以后显示出来。
shoutingwei
commented
6 years ago
实际操作过程
作为ICP,需要把域名解释权交给CDN运营商,其他方面不需要进行修改。也就是,ICP修改自己域名的解析记录,使用CNAME方式指向CDN网络Cache服务器地址。(
解释权不在DNS服务器?
)
作为CDN运营商,首先要为ICP的域名提供公开的解析,为了实现
sortlist
,一般是把ICP的域名解释结果指向一个CNAME记录。当要进行sortlist时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行特殊的处理,使DNS服务器,在接受到客户端的请求时可以根据客户端的ip地址,返回相同域名的不同ip。
由于从cname获得ip地址并带有hostname,请求达到Cache后,Cache必须知道源服务器的ip地址,所以在CDN运营商内部维护一个内部DNS服务器用于解释用户所访问域名的实际ip地址。
维护内部DNS服务器的同时,需要维护一个台
授权服务器
,控制哪些域名可以缓存或者不缓存,以免发生
开放代理
的情况。
传统方式
CDN方式