网页缓存层-CDN加速

file

一、CDN是什么

CDN全称是 Content Distribution Network,译为:内容 分发网络

  • 内容:主要是一些静态资源,比如视频、文档、图片、html等。
    静态内容是不会因用户而异的网站数据。
    网站标题图像、徽标和字体样式对于所有用户都保持不变,并且企业不会经常更改它们
    静态数据无需修改、处理或生成,非常适合存储在 CDN 上。
    占带宽的主要是静态文件,而非 html 代码。我们将大体积的静态文件托管到 CDN 加速,
    源服务器就只要负担体积很小的 html 代码流量了,速度自然就快了!
  • 分发网络:指的是将这些静态资源分发到不同物理地点的机房上,让不同物理地点的用户都能够实现就近机房的静态资源访问。比如海南的用户,就可以就近访问深圳机房上的静态资源,这比你跑到东北的机房要快很多。

如下图:
源站:放在北京呢
各个CDN节点:分撒在全国各地,甚至是全世界各地
各个用户:分散在不同地域的用户,可以就近访问离自己近的CDN服务器
缓存命中:命中则就近访问,未命中则溯源,先从CDN集群里找有没有cdn缓存有数据,都没有,最终会请求到源站,获取数据后缓存到cdn服务器,然后返回给用户,下次访问九快起来了

file

了解CDN简史
CDN技术兴起于 1990 年代后期,主要是为解决跨地域访问速度慢的用户wait的问题

file

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全局负载均衡)

GSLB是cdn内部的调度器,就是由它来计算出分布在全球各地的哪台cdn服务器
是离用户最近的

2、分布在全球个地的CDN服务器,充当缓存

缓存服务器主要的功能就是缓存热点数据,数据类型包括:静态资源(html,js,css等),
多媒体资源(img,mp3,mp4等),以及动态数据(边缘渲染)等。

众所周知耳熟能详的与 CDN 有关的开源软件有:
Squid
Varnish
Nginx
OpenResty
ATS
HAProxy
自建CDN可以看下:https://blog.csdn.net/joeyon1985/article/details/46573281

3、数据源

你的网站,或者某个cdn可以访问到的存储设备

4、配置权威dns

在权威dns中要添加cname解析,将你的域名解析为GSLB的域名

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

file

访问流程:
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服务器响应用户请求,将用户所需内容传送到用户终端。
总结

用户请求的域名-----》cname解析到cdn的域名-----》拿这cdn域名对应的ip地址找到cdn的“调度器”,然后计算出离用户最近的那台cdn服务器-----------》命中数据则返回给用户,未命中则回源去访问源站





以下内容来着阿里云(思路与上面一样,你可以瞅一眼,与上面的思路完全一致,如果无论看啥图,你都能看懂,那就是真的懂了)

file

当终端用户向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

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术