最近项目在做优化,计划将项目中高频接口放入CDN,正好也趁此学习下。

一,CDN是什么?

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上内容分发网络,依靠在各地部署的缓存服务器,通过中心平台的负载均衡/内容分发/调度等功能模块,使用户可以就近获取所需要的内容,从而达到降低网络用塞,提高系统访问速度的技术。CDN的关键技术是内容存储和分发技术。

CDN的思路是:通过在网络各处放节点服务器,这个服务器构成在现有网络基础之上的一层智能虚拟网络,CDN能够将用户的请求分发到距离用户最近的服务器节点上,提高用户访问速度。比如:100台CDN服务器分布在全国各地,如果从广东访问,会从最近的节点返回资源,这就是核心。

二,为什么要使用CDN

1.为了实现跨运营商,跨地域的全网的覆盖

阿里云在国内有500+节点,在国外,也有很多节点保证了网络的顺畅的运行。

2.加快系统的响应速度,更快的响应用户的请求

三,使用前后网络请求对比

1.传统访问步骤

浏览器输入域名——>解析服务器获取对应iP地址——>向该iP对应服务器发送访问请求——>返回给前端渲染页面——>展示给用户

2.使用CDN之后的访问步骤

和传统不同,CDN网络是在用户和服务器之间增加了一层缓存层,将用户的请求引导到最优的缓存节点而不是服务器源站,从而加块访问速度。

完整的CDN工作流程

3.访问流程详解

(1)当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。

(2)CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。

(3)用户向CDN的全局负载均衡设备发起内容URL访问请求。

(4)CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

(5)区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。

(6)全局负载均衡设备把服务器的IP地址返回给用户。

(7)用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

本部分内容,参考链接:https://www.zhihu.com/question/36514327/answer/184247188

类比:传统网站访问类似于淘宝购物,而CDN类似于京东购物。淘宝供应商中心是一个,从一个地方发货,发向全国各地;而京东的自营的电子产品,它会在全国各地建立各种仓库,然后根据下单的地点,寻找距离我们最近的仓库,从而降低送货的时间。

三,项目中主要使用哪些功能

1.加速静态资源

网站中有大量的css,html,js等文件,可以将这些静态内容推送到CDN

2.大文件的下载

软件下载,视频点播等存储网站。

3.部分与用户无关的高频接口加速,在高并发情况下提升接口响应时间

四,CDN关键技术

1.负载均衡

负载均衡是整个CDN的核心,负载均衡和准确性和效率性直接决定了CDN的效率和性能。

负载均衡将网络的流量尽可能均匀的分布在能完成相同任务的服务器或者网络节点上进行处理,避免出现网络分配忙闲不均的情况,这样可以提高网络流量,也可以提高网络性能。

2.内容存储技术

cdn需要考虑两个方面的内容存储技术,一个是内容源的存储,一个是内容在cache节点中的分布式存储,由于内容的规模和吞吐量比较大,因此需要海量存 储架构来解决。

3.内容分发技术

内容分发技术通过构建网络,将链接到IP网络上的内容,快速的传输到用户终端。

CDN主要由初始服务器,分布于各个节点的缓存服务器,重定向DNS服务器和内容交换服务器。

(1)初始服务器负责生成服务器信息内容

(2)缓存服务器负责存储初始服务器的部分或者全部的信息,距离用户近。

(3)重定向服务器 负责向用户提供最近的服务器iP地址,减轻骨干网络压力。

(4)内容交换服务器 负责完成服务器之间的负载均衡功能

四,常见名词解析

1.源站

做CDN之前的客户真正的服务器。

2.CNAME域名

3.边缘节点

也成为CDN节点,Cache节点,指的是距离最终用户接入具有较少的中间节点的网络节点,以此来提高网站访问的速度。

4.CDN加速是对网络所在服务器加速,还是域名加速呢?CDN只是对网络的某一个具体的域名加速,如果同一个网网站由多个域名,则访客访问加入CDN的域名获得加速效果,访问未加速CDN的域名,或者直接访问IP地址,无法获取CDN的效果。

5.CDN网站更新之后,经常会看到的是旧网页?

CDN采取的是各个节点缓存的机制,网站的静态网页和图片修改之后,如果CDN缓存尚未做更改,那么看到的还是旧的网页。项目中经常遇到这个问题,为了解决这个问题。CDN管理面板中提供了URL推送服务,手动来通知CDN各个节点刷新自己的缓存。在URL的推送地址栏中,输入具体的url地址或者目录,刷新缓存即可生效。

五,参考内容

CDN百度百科

知乎讨论

使用CDN之后的网站访问过程变化

小结

大体上了解了CDN内容和原理,后续还会在使用过程中深入理解。处于初学阶段,若有出入,请多多指教?!

【缓存篇】缓存之CDN---原理篇相关推荐

  1. jacoco 原理篇

    关于JAVA代码覆盖率工具JaCoCo,作者会通过三篇来介绍,分别为原理篇.实践篇和踩坑篇,先从原理篇开始介绍~一.覆盖率定义 作为一个测试人员,保证产品的软件质量是其工作首要目标,为了这个目标,测试 ...

  2. 《CDN 之我见》系列二:原理篇(缓存、安全)

    2019独角兽企业重金招聘Python工程师标准>>> <CDN之我见>共由三个篇章组成,分为原理篇.详解篇和陨坑篇.本篇章适合那些从未接触过.或仅了解一些 CDN 专业 ...

  3. 《CDN 之我见》原理篇——CDN的由来与调度

    2019独角兽企业重金招聘Python工程师标准>>> CDN是将源站内容分发至全国所有的节点,从而缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性的技术.它能够有效 ...

  4. 看完这篇缓存双写分析,你面试不再有问题呢~

    今天天朗气清,吃饱撑之余,回想了想之前面试阿里的时候,面试官经常会问的缓存和数据库双写一致性问题怎么保证,同时一个好的实践对业务来说是有很大提升,我在网上看了很多博客写关于这块的内容,很多直接拷贝过来 ...

  5. 删除本地缓存localStorage定义的字段 - 代码篇

    localStorage :操作篇 重要代码: localStorage.removeItem("字段名") //移除localStorage 某个对应的字段 localStora ...

  6. 【玩转Redis面试第4讲】Redis缓存雪崩、缓存穿透、缓存击穿对比看这一篇就够了

    本文 Github/javamap 已收录,有Java程序员进阶技术知识地图以及我的系列文章,欢迎大家Star. 在实际生产环境中有时会遇到缓存穿透.缓存击穿.缓存雪崩等异常场景,为了避免异常带来巨大 ...

  7. ITOO4.1之缓存—分布式缓存Memcached学习(理论篇)

    1.   何为缓存?     缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找.由于缓存的运行速度比内存快 ...

  8. 前端面试题之浏览器原理篇

    前端面试题之浏览器原理篇 一.浏览器安全 1. 什么是 XSS 攻击? (1)概念 (2)攻击类型 2. 如何防御 XSS 攻击? 3. 什么是 CSRF 攻击? (1)概念 (2)攻击类型 4. 如 ...

  9. iOS:app直播---原理篇

    [如何快速的开发一个完整的iOS直播app](原理篇) 转载自简书@袁峥Seemygo:http://www.jianshu.com/p/7b2f1df74420 一.个人见解(直播难与易) 直播难: ...

  10. (转)【如何快速的开发一个完整的iOS直播app】(原理篇)

    原文链接:https://www.jianshu.com/p/bd42bacbe4cc [如何快速的开发一个完整的iOS直播app](原理篇) [如何快速的开发一个完整的iOS直播app](原理篇) ...

最新文章

  1. 一个基于nodejs开发的微服务脚手架应用,架构和CRM WebUI很像
  2. C#学习笔记(十一):动态类型
  3. 面试官扎心一问:Tomcat 在 SpringBoot 中是如何启动的?
  4. java中常量有初始化值吗,Java基础_变量、常量
  5. PAT:1031. 查验身份证(15) AC
  6. SpringMVC的RESTful(二)定制格式
  7. Photoshop 入门教程「8」如何使用裁剪工具?
  8. 服务器后端开发系列——《实战Nginx高性能Web服务器》 (转载)
  9. SpringCloud系列第09节之消息总线Bus
  10. 色环电阻、色环电容的识别方法
  11. “一晚上” 拿到阿里offer的详细准备经历
  12. 百鸡百钱问题和( 30人消费50元,可能包括男人女人小孩,男人3元,女人2元,小孩1元,问各有多少人)问题
  13. 超好看的3D烟花代码
  14. 【经典】《Java170道面试笔试题全面含答案》涉及java/数据库/Spring框架/JVM/数据结构算法/设计模式相关
  15. PS将照片做成素描?看完是心动的感觉
  16. Mentor Graphics Calibre 2017.1 Linux 1DVD寄生參數萃取
  17. list 根据相同字段合并数据
  18. Hbuilder-应用程序打包
  19. 8253可编程定时/计数器芯片
  20. asp基础入门(上)

热门文章

  1. 供应商管理的流程和策略
  2. ubuntu美化笔记
  3. 0.9.2、线程池——核心线程数、阻塞队列、最大线程数之间的关系
  4. 常见的性能测试与应用领域
  5. ks检验python代码_python scipy stats.kstest用法及代码示例
  6. java8 metaspacesize_JVM参数MetaspaceSize的误解
  7. Java位运算(按位与、按位或、异或)
  8. 未测试 Delphi读写UTF-8、Unicode格式文本文件
  9. 转细述揉弦(揉音)作者:Ake
  10. Torch的组合和分块