一、CDN是什么
CDN全称是 Content Distribution Network,译为:内容 分发网络
- 内容:主要是一些静态资源,比如视频、文档、图片、html等。
- 分发网络:指的是将这些静态资源分发到不同物理地点的机房上,让不同物理地点的用户都能够实现就近机房的静态资源访问。比如海南的用户,就可以就近访问深圳机房上的静态资源,这比你跑到东北的机房要快很多。
如下图:
源站:放在北京呢
各个CDN节点:分撒在全国各地,甚至是全世界各地
各个用户:分散在不同地域的用户,可以就近访问离自己近的CDN服务器
缓存命中:命中则就近访问,未命中则溯源,先从CDN集群里找有没有cdn缓存有数据,都没有,最终会请求到源站,获取数据后缓存到cdn服务器,然后返回给用户,下次访问九快起来了
了解CDN简史
CDN技术兴起于 1990 年代后期,主要是为解决跨地域访问速度慢的用户wait的问题
CDN 诞生于二十多年前,为解决内容源服务器和传输骨干网络压力过大的问题,在 1995 年,麻省理工学院教授,互联网发明者之一 Tom Leighton 带领着研究生 Danny Lewin 和其他几位顶级研究人员一起尝试用数学问题解决网络拥堵问题。
他们使用数学算法,处理内容的动态路由安排,并最终解决了困扰 Internet 使用者的难题。后来,史隆管理学院的 MBA 学生 Jonathan Seelig 加入了 Leighton 的队伍中,从那以后他们开始实施自己的商业计划,最终于 1998 年 8 月 20 日正式成立公司,命名为 Akamai。Akamai 公司通过智能化的互联网分发,结束了 “World Wide Wait” 的尴尬局面。
同年 1998 年,中国第一家 CDN 公司 ChinaCache 成立
二、为何要用CDN
高并发场景,想很好地避免网络拥塞状况,提高用户访问网站的响应速度,CDN是必不可少的
CDN的核心就是"就近访问",这是解决高并发的秘诀之一
再次强掉一遍高并发优化口诀:
高频读就少读、读缓存、就近读,高频写就少写、漏斗写、buffer写
-
1、少读:更多的是开发人员优化代码逻辑,尽可能将用户访问某一个页面的衍生出的多个网络io请求数减少
开发人员将许多小图合成一张大图(精灵图/雪碧图,可以谷歌搜“前端雪碧图”看看是个什么东西)
这可以让多次网络io合并成一次,因为多张小图即便合成一张大图,在一次网络io里也足够传输
然后在前端通过定位技术实现这种图各个位置的展示 -
2、读缓存:
开发人员在代码层面 & 运维人员在nginx配置层面
设置:向响应添加Cache-Control 标头,让一些静态内容缓存到用户浏览器中。 -
3、就近读:
离用户近的地方首先就是用户本地———-》添加响应头将一些静态文件缓存到用户本地
其次就是遍布各地的cdn服务器 ———-》CDN
说的再具体点,为什么要用CDN?CDN主要解决什么问题?
1、物理距离远,多次网络转发,延时高不稳定;
2、所在运营商不同,需运营商之间转发绕行;
3、高并发访问时,网络带宽处理能力有限,海量请求时,响应速度与可用性降低。
4、高并发下载或者下载突增场景下对源站性能要求非常高,且源站的带宽成本也较高。
说一种场景,当大型公司或者学校等大型单位在观看直播时,其总的出口带宽是有限的,当有很多人同时在看直播时会把总出口带宽拉满。
cdn在大学直播课中的应用:刚毕业的同学可以好好看看,出一个相关的项目
文章链接:https://blog.csdn.net/abu935009066/article/details/130115516
三、如何用CDN
3.1 先来了解下CDN的核心构成
复习知识:
- 1、本地dns:运营商提供的dns服务器,不存具体的解析记录,其内的解析记录大都是缓存的记录
- 2、权威dns或者叫授权dns:存放这个你要访问的域下的所有解析记录,权威就权威在它身上存的记录是实实在在配置到它机器上的,而不是从别人那里缓存来的
CDN技术的关键组成部分
1、GSLB(global server load balance全局负载均衡)
2、分布在全球个地的CDN服务器,充当缓存
3、数据源
4、配置权威dns
3.2 CDN的访问流程
前提:
1、你自己花钱购买注册的域名,即属于你自己的域名:p1-juejin.byteimg.com
2、你在权威DNS上配置了CNAME解析记录:p1-juejin.byteimg.com解析到了picwebws.psatp.com.wsglb0.com
3、picwebws.psatp.com.wsglb0.com这个域名指向的就是DNS的调度系统,即GLSB
访问流程:
1、用户访问图片内容,先经过 本地DNS 解析,如果 LDNS 命中,直接返回给用户。
2、LDNS MISS,转发 授权DNS 查询
3、返回域名 CNAME picwebws.pstatp.com.wsglb0.com. 对应IP地址(实际就是DNS调度系统的ip地址)
4、域名解析请求发送至DNS调度系统,DNS调度系统为请求分配最佳节点IP地址。
5、返回的解析IP地址
6、用户拿着IP地址发起请求,CDN服务器响应用户请求,将用户所需内容传送到用户终端。
总结
以下内容来着阿里云(思路与上面一样,你可以瞅一眼,与上面的思路完全一致,如果无论看啥图,你都能看懂,那就是真的懂了)
当终端用户向www.aliyundoc.com下的指定资源发起请求时,首先向Local DNS(本地DNS)发起请求域名www.aliyundoc.com对应的IP。
Local DNS检查缓存中是否有www.aliyundoc.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向网站授权DNS请求域名www.aliyundoc.com的解析记录。
当网站授权DNS解析www.aliyundoc.com后,返回域名的CNAME www.aliyundoc.com.example.com。
Local DNS向阿里云CDN的DNS调度系统请求域名www.aliyundoc.com.example.com的解析记录,阿里云CDN的DNS调度系统将为其分配最佳节点IP地址。
Local DNS获取阿里云CDN的DNS调度系统返回的最佳节点IP地址。
Local DNS将最佳节点IP地址返回给用户,用户获取到最佳节点IP地址。
用户向最佳节点IP地址发起对该资源的访问请求。
如果该最佳节点已缓存该资源,则会将请求的资源直接返回给用户(步骤8),此时请求结束。
如果该最佳节点未缓存该资源或者缓存的资源已经失效,则节点将会向源站发起对该资源的请求。获取源站资源后结合用户自定义配置的缓存策略,将资源缓存到CDN节点并返回给用户(步骤8),此时请求结束。
从这个例子可以了解到:
CDN的加速资源是跟域名绑定的。
通过域名访问资源,首先是通过DNS查找离用户最近的CDN节点(边缘服务器)的IP
通过IP访问实际资源时,如果CDN上并没有缓存资源,则会到源站请求资源,并缓存到CDN节点上,这样,用户下一次访问时,该CDN节点就会有对应资源的缓存了。
简单讲,CDN就是通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容。
3.3、网站流入接入CDN的关键
最关键的是交钱对吧,哈哈,除了这个之外,从技术维度,思考流量的走向来考虑,你的网站到底如何才能接入CDN