漫话:如何给女朋友解释什么是CDN?
周六晚上七点多,我正在看书呢,突然女朋友跑过来问我她的IPAD去哪了,火急火燎的。
她拿到了IPAD之后就不再理我了,不过作为一个程序员,我还是比较好奇这么大的流量虎牙到底能不能扛得住,哈哈哈。于是我过去看了一下,结果看到了下面这一幕:
但是直播竟然并没有显得很卡顿,禁不住说了一段话:
据了解,2018年1月,阿里云为虎牙提供了边缘节点服务(ENS)。基于阿里云ENS,可以轻松地将业务模块放到边缘运行,在主播的推流时,实现就近节点进行转码和分发,同时支持了高并发实时弹幕的边缘分发。在获得网络低时延的同时,减少了对中心的压力,节省了30%以上的中心带宽成本,并且实现了边缘节点网络连接小于5毫秒延时,提升了主播上行质量,以及用户成功连接占比等数指标,有效提升了用户观看体验。ENS中最主要的技术就是CDN。
直播终于结束了,女朋友终于跑过来问我什么是CDN了…
什么是CDN
CDN的全称是Content Delivery Network,即内容分发网络。
我们都用过天猫超市,在上面买东西非常方便。天猫超市的模式是货品先入天猫超市(后文简称为"猫超")的菜鸟仓,然后由猫超统一派送的。
为了缩短物流的时间,可以让消费者快速的收到货品,菜鸟在全国各地建了本地仓库,现在大多数情况下,在猫超下单,第二天都可以收到(楼主在江浙沪包邮区,其他地区可能稍有延迟)。
比如我在杭州市西湖区,下单购买了一箱零食,没过多久就可以看到猫超已经发货了,发货地址是杭州的萧山仓,从杭州的一个区运输到另外一个区,24小时怎么也到了。
猫超的配送采用的是智能仓配模式,菜鸟为天猫超市提供全国智能分仓,在商品销售前就已经来到距离消费者最近的仓储基地,下单购买后,由最近的仓发货,就近配送,速度比跨越多个省市跑过来的快多了。
我们可以在菜鸟网络的官网上看到其全国各地的仓库情况,我们可以看到他目前覆盖了全国20个省份,70个城市,共有327个仓库。这些仓库组合在一起被称之为"全国仓网"。
图:菜鸟全国仓配网络
我们在浏览网络的时候,其实就和以上这个过程十分相似,我们访问一个页面的时候,会向服务器请求很多网络资源,包括各种图片、声音、影片、文字等信息。这和我们要购买的多种货物一样。
就像猫超会把货物提前存储在菜鸟建设在全国各地的本地仓库来减少物流时间一样,网站也可以预先把内容分发至全国各地的加速节点。这样用户就可以就近获取所需内容,避免网络拥堵、地域、运营商等因素带来的访问延迟问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
所以,"内容分发网络"就像前面提到的"全国仓配网络"一样,解决了因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。
有了仓配网络之后,除了可以提升货物的配送效率,还有很多其他的好处:
1、首先通过预先做好了货物分发,使得最终货品从出仓到消费者手中的过程是比较短的,那么同城范围内可选择的配送公司就有很多选择,除了比较大的四通一达、顺丰以外,还可以选用一些小的物流公司、甚至菜鸟直接调用饿了么的蜂鸟配送也不是不可能。
CDN技术消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量
2、对于仓配系统来说,最大的灾难可能就是仓库发生火灾、水灾等自然灾害。如果把原来的一个集中式的大仓库打散成多个分布式的小仓库,分别部署在不同地区,就可以有效的减小自然灾害带来的影响。
广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种DDoS攻击对网站的影响,同时保证较好的服务质量
CDN的基本工作过程
传统快递企业采用的配送模式,通过"商家→网点→分拨→分拨→网点→客户"的环节进行配送。这个过程会有一些问题,如环节多、时效慢、易破损等。
上面这个过程和传统网站的请求响应过程类似,一般经历以下步骤:
用户在自己的浏览器中输入要访问的网站域名。
浏览器向本地DNS服务器请求对该域名的解析。
本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以迭代方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。
浏览器得到域名解析结果,就是该域名相应的服务设备的IP地址 。
浏览器获取IP地址之后,经过标准的TCP握手流程,建立TCP连接。
浏览器向服务器发起HTTP请求。
服务器将用户请求内容传送给浏览器。
经过标准的TCP挥手流程,断开TCP连接。
电商自建物流之后,配送模式有所变化:提前备货将异地件转化成同城件,省去干线环节提升时效,仓储高自动化分拣保证快速出库的同时也保证了分拣破损率较低。
对于用户来说,购物过程并没有变化,唯一的感受就是物流好像是比以前快了。所以,引入CDN之后,用户访问网站一般经历以下步骤:
当用户点击网站页面上的内容URL,先经过本地DNS系统解析,如果本地DNS服务器没有相应域名的缓存,则本地DNS系统会将域名的解析权交给CNAME指向的CDN专用DNS服务器。
CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回给用户。
用户向CDN的全局负载均衡设备发起URL访问请求。
CDN全局负载均衡设备根据用户IP地址,以及用户请求的URL,选择一台用户所属区域的区域负载均衡设备,并将请求转发到此设备上。
基于以下这些条件的综合分析之后,区域负载均衡设备会选择一个最优的缓存服务器节点,并从缓存服务器节点处得到缓存服务器的IP地址,最终将得到的IP地址返回给全局负载均衡设备:
根据用户IP地址,判断哪一个边缘节点距用户最近;
根据用户所请求的URL中携带的内容名称,判断哪一个边缘节点上有用户所需内容;
查询各个边缘节点当前的负载情况,判断哪一个边缘节点尚有服务能力。
全局负载均衡设备把服务器的IP地址返回给用户。
用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
图:华为云全站加速示意图
CDN全局负载均衡设备与CDN区域负载均衡设备根据用户IP地址,将域名解析成相应节点中缓存服务器的IP地址,实现用户就近访问,从而提高服务端响应内容的速度。
CDN的组成
前面我们说过,一个仓配网络是由多个仓库组成的,同理,内容分发网络(CDN)是由多个节点组成的。一般来讲,CDN网络主要由中心节点、边缘节点两部分构成。
图:帝联云下载加速场景图
中心节点
中心节点包括CDN网管中心和全局负载均衡DNS重定向解析系统,负责整个CDN网络的分发及管理。
边缘节点
CDN边缘节点主要指异地分发节点,由负载均衡设备、高速缓存服务器两部分组成。
负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时还负责收集节点与周围环境的信息,保持与全局负载均衡DNS的通信,实现整个系统的负载均衡。
高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中Cache服务器就像网站的原始服务器一样,响应终端用户的请求。因其距离用户更近,故其响应时间才更快。
中心节点就像仓配网络中负责货物调配的总仓,而边缘节点就是负责存储货物的各个城市的本地仓库。
目前,主要由很多提供CDN服务的云厂商在各地部署了很多个CDN节点,拿阿里云举例,我们可以在阿里云的官网上了解到:阿里云在全球拥有2500+节点。中国大陆拥有2000+节点,覆盖34个省级区域,大量节点位于省会等一线城市。海外和港澳台拥有500+节点,覆盖70多个国家和地区。
图:阿里云在中国大陆的CDN节点的分布情况
有了如上图的阿里云在中国大陆的CDN节点的分布之后(这是不是也和我们前面看到的那张菜鸟网络的全国仓网很像),一个在杭州的电信网络用户,访问某个部署在阿里云上面的网站时,获取到的一些资源,如页面上的某个图片、某段影片或者某些文字,可能就是该网站预先分发到浙江的某个移动CDN存储节点提供的,这样就可以大大的减少网站的响应时间。
CDN相关技术
首先我们想一下,要想建设一个庞大的仓配网络都需要考虑哪些问题,需要哪些技术手段呢?
笔者认为主要是四个重要关注的点,分别是:
1、如何妥善的将货物分发到各个城市的本地仓。
2、如何妥善的各个本地仓存储货物。
3、如何根据用户的收货地址,智能的匹配出应该优先从哪个仓库发货,选用哪种物流方式等。
4、对于整个仓配系统如何进行管理,如整体货物分发的精确度、仓配的时效性、发货地的匹配度等。
图:菜鸟仓库智能机器人分拣货物
这其实和CDN中最重要的四大技术不谋而合,那就是内容发布、内容存储、内容路由以及内容管理等。
内容发布
它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处。
内容存储
对于CDN系统而言,需要考虑两个方面的内容存储问题。一个是内容源的存储,一个是内容在 Cache节点中的存储。
内容路由
它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,以使用户请求得到最近内容源的响应。
内容管理
它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。
参考资料:
https://www.gelonghui.com/p/140685
https://blog.csdn.net/championhengyi/article/details/80726304
https://www.gelonghui.com/p/140685
漫话:如何给女朋友解释什么是CDN?相关推荐
- 漫话:如何给女朋友解释什么是3PC?
一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如何给女朋友解释什么是2PC(二阶段提交)?>中介绍过关于2PC的知识,要不然这事儿可 ...
- 漫话:如何给女朋友解释什么是适配器模式?
本文经授权转载自微信公众号:漫话编程 周末窝在家里面打王者荣耀,女朋友在旁边玩我的电脑,我嫌她播放的综艺节目声音比较大,于是建议她戴耳机. 适配器模式 Adapter Pattern,通常被翻译成适配 ...
- 漫话:如何给女朋友解释什么是BIO、NIO和AIO?
本文经授权转载自微信公众号:漫话编程 周末午后,在家里面进行电话面试,我问了面试者几个关于IO的问题,其中包括什么是BIO.NIO和AIO?三者有什么区别?具体如何使用等问题,但是面试者回答的并不是很 ...
- java 日期加一天_漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?...
2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机.看了一会之后她突然问我一些很奇怪的问题. 于是我拿过他的手机,看到了下面这一幕: 这是微信官方出的公众号管理 ...
- 漫话:如何给女朋友解释什么是 3PC?
作者 | 漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 责编 | 胡巍巍 一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如 ...
- 漫话:如何给女朋友解释什么是语法糖?
语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家Peter J. Landin发明的一个技术术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响, ...
- 漫话:如何给女朋友解释为什么吴某凡会被中间人攻击?
中间人攻击 中间人攻击(Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们 ...
- 漫话:如何给女朋友解释什么是Mock?
某天晚上,接到测试的电话,他问为什么在日常环境我的接口使用不同的用户测试返回的内容都一样,我回答他:接口数据被我mock掉了,现在返回的都是mock数据.需要调一下mock的逻辑才行. 挂断电话之后, ...
- 漫话:如何给女朋友解释什么是大案牍术?
听说最近<长安十二时辰>比较火,于是趁着一个周末赶紧补一补剧.相信很多人都对其中的"大案牍术"比较感兴趣,靖安司说"大案牍术"选中了张小敬. 看到这 ...
- 漫话:如何给女朋友解释什么是熔断?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 最近比较忙,白天上班,晚上还得面试,都没有时间关注新闻.某天晚上刚 ...
最新文章
- SCALA当的trait
- x10i升级android4.0,智再升级 Xperia X10i升Android 2.3
- linux命令wget多个参数,wget 命令参数使用方法
- 程序员幽默:39个奇葩代码注释,看完笑哭了
- 2013_changchun_online
- 电子商务计算机网络安全技术教案,网络安全技术教案.pdf
- ANSI X9.9 MAC算法介绍
- 【万字长文】创业公司就应该技术选型 Spring Cloud Alibaba , 开箱即用
- React源码之 从开始说起
- 9.6 awk(上);9.7 awk(下)
- CSS display 常用属性小结
- 房地产中介管理系统【JAVA版本】
- pytorch 实现简单二元分类器以及可视化
- 用Python实现一个商场管理系统(附源码)
- 图解:什么是最长递增子序列?
- BZOJ——2563: 阿狸和桃子的游戏
- Splendor宝石游戏的策略分析
- 推荐算法之基于物品的协同过滤
- oracle里面asm的作用,Oracle ASM 详解
- Vue2.0开发之——Vue基础用法-axios(29)
热门文章
- 搜狗输入法输入希腊字母
- 2017智能周报 | 12.10-12.17 | 工信部发布AI行动计划、各地AI研究院纷纷成立、DM证明AI存在反人类风险……
- 基于MySQL的京东用户行为分析
- 特朗普Twitter账号解封!马斯克:人民的声音,上帝的声音
- python怎么去掉视频字幕_用Python处理字幕文件
- 如何修改电驴服务器地址,emule设置连接服务器地址
- layer非常不错的web弹窗/层解决方案
- 网站被黑该怎么处理和解决
- 计算机领域获奖感言,期中考试获奖感言
- json标准格式举例_json几个小例子