详解 CDN 加速
背景
- 本来是为了深入了解 CDN 的,结果发现前置知识:IP、域名、DNS 都还不算特别熟,所以先写了他们
- 现在终于来聊一聊 CDN 啦
- 本文素材均出自:https://www.bilibili.com/video/BV12T4y1P7Fh,动画仍然满分
如何打开一个网站
前面说过了
- 浏览器访问域名
- DNS 负责解析域名,找到域名对应的 IP 地址
- 浏览器访问 IP 地址对应的服务器,渲染响应内容
存在两个问题
问题一
- 服务器有地理位置
- 无论是云服务器,还是传统服务器,它都有一个地理位置
- 如果请求它的设备离它很远,那么它的请求时间肯定会更长
- 假设同时有很多个设备同时请求,带宽有限的情况下,即使离服务器很近,那请求时间也会被拉长
问题二
- 服务器稳定性,会小概率出现宕机
- 假设原始服务器出现宕机问题,会导致网站无法正常访问
- 如果是小公司,还没有专业的运维人员的话,那么宕机发生的时候可能会无法及时告警
CDN 介绍
全称
Content Delivery Network,内容分发网络
为什么会出现
就是为了解决上述两个问题:限于地理位置、服务器稳定性
场景类比
用过京东网购都知道,为什么京东物流能当天/隔日到?因为它有前置仓、区域仓的仓储配送机制
电商物流进化历程
- 第一阶段:只有商家仓库,无论在哪购买,都从仓库发货,所以快递时间需要 3-10 天
- 第二阶段:建立区域仓,在一些关键城市建立区域仓,然后从商家仓库囤点货,当下单购买后,会就近选择区域仓进行发货
- 第三阶段:建立前置仓,就是京东那种,就在你家旁边建一个仓库,送货速度极快
CDN 其实就是类似第三阶段,让离你最近的服务器发送数据,这样无论在哪访问网站,速度都是杠杠的
CDN 实现原理
一开始已经复习了下是如何打开一个网站的,其实 CDN 跟 DNS 也是有关系的
前提:没有 CDN 的情况下
跟开头讲的顺序一样
- 浏览器查询 DNS 服务器域名对应 IP 地址是什么
- DNS 服务器返回 IP 地址
- 浏览器访问 IP 地址对应的服务器
- 服务器返回网站数据给浏览器
添加 CDN 专用解析记录
- 在域名的 DNS 解析设置中,添加一条 CDN 专用的解析记录
- 这条解析记录会让域名被解析之后, 会指向一个 CDN 网络专用的处理 DNS 服务器
CDN 专用的 DNS 服务器
- 浏览器发送 DNS 查询请求到 DNS 服务器
- DNS 服务器会返回 CDN 专用的处理 DNS 请求的服务器的 IP 地址给浏览器(上面说的 CDN 专用解析记录)
- 浏览器拿到 IP 地址后访问 CDN 专用 DNS 服务器
- 然后呢,CDN 专用 DNS 服务器就会返回 CDN 负载均衡服务器的 IP 地址
- 浏览器拿到 IP 地址后访问 CDN 负载均衡服务器
- CDN 负载均衡服务器会根据浏览器的网络地址,在 CDN 网络中返回最适合的 CDN 服务器的 IP 地址,可能是没什么人用的服务器,也可能是比较近的服务器
CDN 负载均衡服务器的作用
它会给请求设备分配合适的 CDN 服务器的 IP 地址
获取网站数据
- 浏览器拿到 CDN 服务器的 IP 地址之后,就会访问它
- 假设第一个 CDN 服务器没有需要的网站文件(缓存中没有),就会去 CDN 网络中的上层 CDN 服务器中拉取
- 如果上层 CDN 服务器没有还会继续往上层找
- 如果所有上层 CDN 服务器都没有找到,就会去源站中拉取
- 拉取成功之后,就会在刚刚经过的所有 CDN 服务器中缓存这些网站文件
- 最后第一个 CDN 服务器会将网络文件发送给浏览器
源站 IP
- 浏览器需要访问的域名的网站服务器的 IP 地址
- 在开通 CDN 的时候,就需要在 CDN 后台设置源站 IP
- 网站的文件就是放在源站上的,比如静态资源文件、视频、音频
CDN 服务器的缓存机制
- 通过 CDN 服务器的缓存机制,这样下次其他设备要去访问 www.bilibili.com 的时候,就能直接从 CDN 服务器的缓存中拉取到对应的网站文件了
- 不需要访问源站的话,可以减少源站压力,还能加快请求速度
CDN 服务器的稳定性
- CDN 的缓存机制除了能让用户快速打开一个网站,还可以提高网站的稳定性
- 假设源站宕机,或者 CDN 服务器节点宕机了之后,CDN 网络中还有其他 CDN 服务器可用,这样访问网站就可以从可用的 CDN 服务器上拉取网站文件,不至于访问不了网站
待更新更深入的内容
详解 CDN 加速的更多相关文章
- 详解HTTPS加速原理
HTTPS是什么? http叫超文本传输协议,使用TCP端口80,默认情况下数据是明文传送的,数据可以通过抓包工具捕获到,因此在interner上,有些比较重要的站点的http服务器需要使用PKI(公 ...
- PHP写在线视频直播技术详解
2016年7月22日 22:26:45 交流QQ:903464207 本文会不断更新 废话一句,如果你要做高性能服务器服务,请去读底层的东西 http tcp/ip socket 了解基础协议,你对如 ...
- Signalr系列之虚拟目录详解与应用中的CDN加速实战
目录 对SignalR不了解的人可以直接移步下面的目录 SignalR系列目录 前言 前段时间一直有人问我 在用SignalR 2.0开发客服系统[系列1:实现群发通讯]这篇文章中的"/Si ...
- 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解
注意域名,动静分离的网站,只对静态文件的域名做了cdn 怎么看网站有没开启CDN? 要看一个网站是否开启CDN,方法很简单,只要在不同的地区ping网址就可以,比如在山东济南ping www.jb51 ...
- 《CDN技术详解》 - CDN知多少?
开发时间久了,就会接触到性能和并发方面的问题,如果说,在自己还是菜鸟的时候完全不用理会这种问题或者说有其他的高手去处理这类问题,那么,随着经验的丰富起来,自己必须要独立去处理了.或者,知道思路也行,毕 ...
- CDN学习笔记二(技术详解)
一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...
- CDN技术详解及实现原理
CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精 ...
- CDN技术详解笔记
1.影响网络传输的四个因素(1)“第一公里”:网站服务器接入互联网的链路所能提供的带宽.(2)“最后一公里”:用户接入带宽.(3)对等互联关口:不同网络之间的互联互通带宽.(4)长途骨干传输:首先是长 ...
- 让 CDN 更省流量的 Brotli 算法详解
早年,我还是学生的时候,时常会鼓捣自己的个人网站,其中最困扰我的问题就是源站服务器易崩溃.作为学生,一方面我没有足够的钱购买高质量的服务器,另一方面一年的流量费用算下来也挺贵的,要花掉我不少的生活费. ...
随机推荐
- mxgraph中mxStencil使用教程
目录 标签嵌套关系 Shapes shape connections background foreground 其他样式 图形内部颜色绘制 封闭线段绘制 设置一条线的颜色大小 样例 官方文档:htt ...
- matlab添加当前路径下的所有子目录
% 添加当前路径下的所有子目录addpath(genpath(pwd));
- MSSQL·将一对多的数据合并为以指定分隔符的数据
阅文时长 | 0.05分钟 字数统计 | 142.4字符 主要内容 | 1.引言&背景 2.Stuff函数语法&模拟场景 3.声明与参考资料 『MSSQL·将一对多的数据合并为以指定分 ...
- Objective-C 中不带加减号的方法
显而易见的事实是,Objective-C 中,+ 表示类方法,- 表示实例方法. 但看别人代码过程中,还会发现一种,不带加减号的方法. @implementation MyViewController ...
- [Python] execl读写
相关库 读:xlrd 写:xlwt 案例 要求: 将图1中的数据导以图2的形式写入另一个文件中 第一列索引关系:{1:K1-B1,2:K1-B2} ...(18列) 思路: 按行读取数据,根据索引关系 ...
- [Java] Spring 使用
背景 JavaEE 应用框架 基于IOC和AOP的结构J2EE系统的框架 IOC(反转控制):即创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象,是Spring的基础 ...
- Linux PATH环境变量及作用(初学者必读)
Linux PATH环境变量及作用(初学者必读) < 什么是环境变量,Linux环境变量有哪些?Linux打包(归档)和压缩 > <Linux就该这么学>是一本基于最新Linu ...
- 学习android开发的一些笔记
一:UI开发 由于我们使用了android:layout_weight属性,此时控件的宽度就不由android:layout_width来决定了,这里指定成0dp是一种比较规范的写法. android ...
- Jmeter——元件扩展,使其功能更全面
工具扩展 在之前的博文中,有介绍自定义函数.Java请求扩展,博文如下: Jmeter二次开发--基于Java请求 Jmeter二次开发--自定义函数 上述内容,是按自己的需要来进行针对性扩展,从而实 ...
- 马斯克如何颠覆航天? 1/5385成本,c++和python编程!
马斯克如何颠覆航天? 1/5385成本,c++和python编程! 5月31日,经历了重重困难,马斯克的SpaceX载人飞船成功发射,这是美国自2011年以来首次发射载人航天飞船,也是美国进入由商业主 ...