CDN 原理和几种变形(DCDN/ECDN/PCDN/SCDN)
CDN 基本概念
CDN 是Content Delivery Network的缩写,翻译为内容分发网络,主要场景是静态资源的下发,他可以解决以下几个问题:
- 高延时,距离服务器较远的用户访问资源延时较高。比如你的服务器在中国,如果美国用户访问就会有较高的网路延迟。
- 带宽瓶颈,大量用户访问静态资源(图片,视频,css等)导致的服务器带宽拥塞。比如你的服务器上存了一个视频,然后同时有几十个用户来看,对于一般网络配置的服务器都是受不了的。
CDN工作原理与架构
从这张图可以看到CDN的一个工作流程。
左侧方框里面是域名解析流程,通常CDN资源的域名都是CNAME记录指向一个CDN服务的域名,也就相当于把最终IP的解析权交给了CDN服务。CDN服务会根据你的IP定位,返回一个与你邻近的CDN节点IP。从右边方框可以看到DNS返回了北京节点的IP给北京的用户。用户无须访问可能更长路由的源站,这样就解决了上面提出的第一个延迟高的问题。
右侧方框是内容下发流程,得到上面的IP之后用户会去对应CDN节点获取资源,如果当前节点(边缘服务器)存在这个资源则直接返回。如果不存在或已经过期CDN节点会先向源站(也就是你的资源存储的地方)下载这份资源再返回,这个向源站请求资源的过程被称作回源请求。自此这个边缘节点就缓存了这份资源,在有效期内如果有其他北京用户来访问则直接由边缘节点响应而无须回源。这样就解决了上面提出的第二个源站带宽瓶颈的问题。
其实我们可以把CDN简单理解为分布式缓存。CDN服务商会把CDN节点分布在各个区域,并通过DNS技术让你请求到邻近的CDN节点。
全站加速 DCDN or ECDN?
为什么有个问号呢,因为这个英文名称比较不一致,在阿里云叫DCDN,Dynamic Route for Content Delivery Network也就是动态路由+CDN,腾讯云叫ECDN也就是企业级CDN。不过ECDN这个词在其他一些云服务商那里又有另一种定义,咱们在后文说明。
全站加速解决的问题可以参考《利用CDN代理规避网络线路问题》。
普通CDN通常用来缓存静态资源,动态请求虽然不会占用很大带宽,但是同样会面临高延时和不稳定的问题。当我们用公共网络路由去访问源站的时候,很可能比较遥远且崎岖。全站加速就是解决这个问题,动静态全部都发到这里来,因为CDN节点的分布式特点,我们可以把请求转发到就近的CDN节点,再由CDN内部转发到源站就近的CDN节点,由于CDN节点之间通信有服务商专门维护,因此可用性要比公共网络好很多。他的工作原理如下图所示。
腾讯云全站加速工作原理图
上图中云的部分就是全站加速。
使用全站加速最重要的是要分好动态请求和静态请求,否则动态结果被错误缓存,静态结果缓存不到都会影响整站的性能。
SCDN
S是Secure,也就是具有安全防护功能的CDN,SCDN的架构与全站加速基本一致,区别就是在CDN节点不仅具有加速功能,还配有防火墙,所有请求都是发到CDN节点,这样的好处第一隐藏了源站服务器IP,让攻击者不能直接攻击源站,第二因为CDN节点配有防火墙,可以抵御大部分DDOS和CC攻击。在cloudflare那里,不仅配置了DDOS高防,还可以配置WAF功能。
其实依我来看,这些ECDN,SCDN都是国内云厂商搞出来的花样套餐。在cloudflare那里,都属于CDN的标配功能了,cloudflare没有国内节点,因此不适合在国内商用。国内貌似何至今都没有做到这种水平的。
ECDN
ECDN比CDN多个Enterprise,也就是企业CDN。主要解决的一个问题如下图所示。
传统CDN遇到的挑战
我们设想一个场景,一家大型企业内部号召大家打开直播观看CEO讲话,这时大家同时去请求一个公司外网的资源(尤其是视频),很容易导致公司主线带宽紧张。下面这个方案就可以解决这个问题。
ECDN解决方案
这张图上,右侧方框表示公司内网,公司内部架多了一层ECDN节点,由该节点去上层CDN或源站获取资源,再由公司内网的ECDN节点分发到公司内部的各个终端上,通常内网带宽都会高很多,所以压力不大。
ECDN其实还是普通CDN技术,只是用节点分布的思想解决一部分网络瓶颈问题。
PCDN
阿里云底下还有一个PCDN,P就是P2P,概念就是P2P+CDN,利用P2P下载来提升CDN性能。P2P下载的道理很简单,当我们下载好资源之后我们也可以作为一个下载节点供其他用户下载,用过BT下载的同学应该都能懂。把这个思路用在CDN上,也就是把所有的电脑都团结起来,强大的CDN就一定会实现,这种方案同时可以解决上面ECDN的问题,只是在P2P场景下,ECDN节点变成了企业内部每一个下载了该资源的终端。
阿里云PCDN完整架构如下图
PCDN工作原理图
CDN 原理和几种变形(DCDN/ECDN/PCDN/SCDN)相关推荐
- 详谈RDMA技术原理和三种实现方式
导读:远程直接内存访问(即RDMA)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入.RDMA最早在Infiniband传输网络上实现,后来业界厂家把 ...
- 【CDN】CDN 原理和使用
目录 一.CDN 是什么 二.CDN 由来 三.CDN 原理 3.1 概念 3.2 一般的 web 请求过程 3.3 CDN 加速的 WEB 请求过程 3.4 二者区别 四.CDN 分类 4.1 网页 ...
- CDN原理与应用简要介绍
CDN原理与应用简要介绍 CDN的全称是Content Delivery Network(内容分发网络或内容交付网络).CDN是构建在现有网络基础之上的智能虚拟网络,CDN依靠部署在各地的边缘服务器, ...
- OpenGL坐标变换及其数学原理,两种摄像机交互模型(附源程序)
OpenGL坐标变换及其数学原理,两种摄像机交互模型(附源程序) 实验平台:win7,VS2010 先上结果截图(文章最后下载程序,解压后直接运行BIN文件夹下的EXE程序): a.鼠标拖拽旋转物体, ...
- 深入剖析Linux IO原理和几种零拷贝机制的实现
本文来说下Linux IO原理和几种零拷贝机制的实现 文章目录 概述 物理内存和虚拟内存 物理内存 虚拟内存 内核空间和用户空间 内核空间 用户空间 Linux的内部层级结构 Linux I/O读写方 ...
- 二分查找法及其四种变形(MATLAB)
已经从学校毕业一年,然而重温一下当年老师布置的各种算法作业,如今才刚刚领悟.因为是数学专业,所以就用MATLAB软件写了一番,也许还存在一些不足,但内心也有一丝的小成绩.今天,就写写二分查找法及其变形 ...
- 动词常见三种变形方式总结
动词常见三种变形方式总结 一.动词原形 讲解:标日书上写的一类动词二类动词三类动词分别对应下面的内容. 一类动词:五段动词 二类动词:一段动词 三类动词:サ变动词:カ变动词 ① 五段动词:(一类动词) ...
- js跨域解决方案php,详解js跨域原理以及2种解决方案_javascript技巧
1.什么是跨域 我们经常会在页面上使用ajax请求访问其他服务器的数据,此时,客户端会出现跨域问题. 跨域问题是由于javascript语言安全限制中的同源策略造成的. 简单来说,同源策略是指一段脚本 ...
- HTTP/HTTPS及CDN 原理
HTTP 是一个无状态的协议.无状态是指客户机(Web 浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务 ...
- 五分钟让你搞懂Nginx负载均衡原理及四种负载均衡算法
前言 今天这篇文章介绍了负载均衡的原理以及对应的四种负载均衡算法,当然还有对应的指令及实战,欢迎品尝.有不同意见的朋友可以评论区留言! 负载均衡 所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游 ...
最新文章
- 详细讲解MapReduce二次排序过程
- 关闭Android/iPhone浏览器自动识别数字为电话号码
- 【Java报错】java.lang.ClassCastException: xxxClass cannot be cast to java.lang.Comparable 问题重现+解决
- gcc编译C++程序
- LiveVideoStackCon 2018展现多媒体技术生态多样性
- 006-Python迭代器
- CentOS 上snmp的安装和配置
- C++实现员工信息管理系统
- Mybatis学习之路——看这一篇文章,深刻学会Mybatis
- 名词解释isp_名词解释
- Java基础 -> 线程池的底层⼯作原理
- 1000: 从今天开始入坑C语言
- holdpwd php,PHPMyWind后台管理界面的SQL注入漏洞 - 网站安全
- 浅谈ThingJs之对象查询方法
- 3G0众测靶场-0407 WriteUp
- VSCode全配置(c++、unity、html...等配置和好用设置,持续更新)
- DMA方式、中断方式的传输速率比较
- 第十八届中日韩三国IT局长OSS会议暨东北亚开源软件推进论坛在韩国首尔成功举办...
- mysql8 设置binlog的保留时间
- 华为手机承载系统在哪里_华为鸿蒙OS系统取得重大突破!华为手机新系统真的来了:兼容安卓10...