云端架构之道:CDN的本质——大规模分布式多级缓存系统

Posted 云计算那些事儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云端架构之道:CDN的本质——大规模分布式多级缓存系统相关的知识,希望对你有一定的参考价值。

一说到CDN,就感觉心情很复杂,曾经从一个完全不入门的小白,短短的2年内,将运营商的CDN业务从零开始做起,搞得风风火火,在公司云计算业务发展的初期,占据了很大一部分的收入。可不曾想到,短短几年内,国内以网宿为代表的传统CDN厂商(包括运营商CDN业务),被阿里云为代表的互联网公司以低价疯狂掠夺CDN市场,将流媒体业务CDN加速的价格从20多元/M/月,一直打压到现在的几块钱!然而,市场风云变幻,以5G+AR/VR+边缘计算的新兴业务,将会给流媒体CDN加速的业务带来怎样的市场规模?未来又是谁家独领风骚?我们拭目以待!

今天我们开启缓存篇章的有关CDN系列内容,大概也会分几个部分来阐述。

我们先从CDN的基础开始讲起。


· 01 ·

什么是CDN


CDN ,全称Content Delivery Network,即内容分发网络,CDN是构建在网络上的内容分发网络,依靠部署在各地边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率,核心技术是内容存储和分发技术。
如果是CDN小白,估计看了上面的一段CDN的定义,一头雾水,没关系,我们举一个关于制造厂与仓库的例子:
有一家生产电子产品的制造厂总部在北京,制造厂在全国各地都建有仓库,这样各地营业网点可以直接从最近的仓库拿货,保证销售网点的库存。
第一个思考点:CDN是什么?类似于仓库。
试想如果没有仓库情况下,在同等运力情况下,全国营业网点都去北京取货,仅仅考虑取货时间,如营业网点在天津,取货往返大概需要2个小时;如营业网点在深圳,及时发顺丰也要两天。对于每个营业网点来说,都希望能最短时间拿到货,来补给网点的库存。
仓库作用是啥呢,虽然电子产品制造厂在北京,但因为有了各地仓库,让各个营业网点取货时间大致相同。
现在我们类比一下CDN,假设业务服务器在北京,服务器上有一些视频文件,服务器会把热点的视频分发到分布在全国各地的CDN节点(相当于各地仓库),这样各地的用户访问热点视频的时候,就能直接就近从CDN节点上访问,让全国各地用户观看视频的访问时间大致相同,不会因为地域性的不同,看到视频的时间差距较大。
第二个思考点:CDN架构?类似仓库建设
从仓库选址到最后建成,考虑因素非常多,例如当地土地价格,人力成本,运输成本,道路交通等等。这里仅仅单纯考虑如何让各个营业网点取货时间大致相同。 最简单方法是各个地市都建立一个仓库 ,这个问题就解决了。
1、初步运输线路
营业网点->>>>>地市仓库->>>>>总部北京
但是这个方案好不好呢,我们目的是让营业网点取货时间大致相同,由于地市仓库到北京总部距离远近各异,如果翻山越岭,长途跋涉,路上抛锚,修车,延误地市仓库补给,最终导致营业网点取货延迟。为了降低这类风险,公司计划继续增加仓库建设,新增大区仓库,例如华北,东北,西北,华南,西南,华东五大大区,这样就形成了多级仓库系统。
2、优化运输线路
营业网点->>>地市仓库->>>大区仓库->>>总部北京
改进后的方案,保证各个运输线路缺货时间大致相同,进而保证全国各地营业网点取货时间。
类比CDN系统,大概也是这么个建设仓库架构演进,层层收敛汇聚,保证全国用户看到热点视频的时间大致相同,如下图是常规的CDN系统架构图:

简单的类比如下:
边缘节点=各地仓库,
区域节点=大区仓库;
中心节点=北京总部。


· 02 ·

CDN属于云计算吗?

CDN业务最早的定位是作为IDC的增值业务,是基于IDC的机架和带宽基础上,通过CDN平台的复用技术,在不同的时间段进行带宽资源的分配,让闲置的带宽资源能够充分利用起来,实现资源的复用。后来随着云计算兴起,发现CDN的特性其实是完美的覆盖了云计算的五个关键特性:
1)弹性服务
CDN服务规模可快速伸缩,可以自动适应业务负载的动态变化。
对于客户来说,可以认为CDN服务提供商能够提供的带宽是没有上限的,能够满足突发流量的需求。
2)资源池化
CDN全网的节点通过中心节点对全网的带宽资源统一调度,全网的带宽资源以共享资源池的方式统一管理。
大型的CDN服务商全网的带宽资源能够达到TB级,强调规模和资源的动态调度和复用。
3)按需服务
CDN是标准的按需服务的模式,并可根据用户需求,自动分配资源,而不需要系统管理员干预。
4)服务可计费
客户可以通过控制台监控自己的资源使用量,并根据资源的使用情况对服务计费。
5)泛在接入
用户无论使用何种终端设备(如PC电脑、笔记本电脑、智能手机等)都能随时随地通过互联网访问CDN提供的服务。
总结一下: 云计算是强调对CPU计算资源的复用,而CDN强调的是对带宽资源的复用。


· 03 ·

CDN的作用:不仅仅是提升访问性能


1. 实现跨运营商、跨地域的全网覆盖
互联不互通、区域ISP地域局限、出口带宽受限制等种种因素都造成了网站的区域性无法访问。CDN加速可以覆盖全球的线路,通过和运营商合作,部署IDC资源,在全国骨干节点上,合理部署CDN边缘分发存储节点,充分利用带宽资源,平衡源站流量。
2. 保障网站安全
CDN的负载均衡和分布式存储技术,可以加强网站的可靠性,相当无无形中给你的网站添加了一把保护伞,应对绝大部分的互联网攻击事件。防攻击系统也能避免网站遭到恶意攻击。
3. 异地备援
当某个服务器发生意外故障时,系统将会调用其他临近的健康服务器节点进行服务,进而提供接近100%的可靠性,这就让你的网站可以做到永不宕机。
4. 节约成本投入
使用CDN加速可以实现网站的全国铺设,你根据不用考虑购买服务器与后续的托管运维,服务器之间镜像同步,也不用为了管理维护技术人员而烦恼,节省了人力、精力和财力。
5. 让你更专注业务本身
CDN加速厂商一般都会提供一站式服务,业务不仅限于CDN,还有配套的云存储、大数据服务、视频云服务等,而且一般会提供7x24运维监控支持,保证网络随时畅通,你可以放心使用。并且将更多的精力投入到发展自身的核心业务之上。


· 04 ·

看透CDN的本质


CDN本质其实是一种大规模分布式多级缓存系统,为啥这样说呢?
首先,我们来看一下所谓的多级缓存系统。
我们知道CPU有三级缓存,L1\L2\L3,越是靠近CPU,缓存的性能越快,受制于成本,容量越小。
我们在给客户的业务系统设计云端的存储架构的时候,也会考虑多级存储,比如热点数据我们会放在性能较好的SSD块存储上,冷数据我们会放在云存储上,归档数据我们会放在归档存储上,存储的访问性能逐级下降。
对于CDN节点的存储来说,一般也是采用分级存储,比如淘宝的CDN,采用了SSD + SAS + SATA混合存储,图片随着热点变化而迁移,最热的图片存储在SSD上,中等热度的存储到SAS,轻热度的存储到SATA。通过此种方式,能够很好的结合几种存储介质的成本与优势。
对于CDN系统来说,整体的架构,我们知道一般是三级架构:
中心->区域->边缘节点
中心节点缓存了最多的业务数据,会分发到区域节点,再由区域节点分发到边缘节点,属于三级缓存系统。
其次,我们要了解分布式系统的特性,以及CDN是否符合分布式的特性。
分布式系统有以下特性:
  1. 分布性:分布式系统中的计算机可以在空间上任意分布。CDN节点不仅仅在空间上分布在全国各个城市,还要覆盖三大运营商,外加教育网、广电网等网络,甚至还需要满足海外CDN的需求。
  2. 并发性:在一个分布式系统中,会经常涉及到并发操作一些共享的资源。在CDN系统中,可能会涉及到大量用户并发访问边缘节点的热点资源;
  3. 容错性:对于组成分布式的计算机,随时都有可能发生任何形式的故障。在CDN系统中,各个节点都会考虑冗余的服务器和存储空间来防止热点数据的丢失;
  4. 透明性:对于应用的访问是透明的。CDN系统中,用户不用关心我要访问哪些CDN节点,所有的访问都是由后台的调度系统来统一管理。
最后,我们说CDN是大规模的缓存系统,是因为国内的主流的CDN厂商,他们的边缘节点、骨干节点都是分布在全国各地,拥有几百个节点、TB级的带宽资源,对于缓存系统来说,真的可以算是大规模系统了!

   

*原创文章,禁止转载,如需引用,需征求作者同意,并注明出处。

标签:二十年IT从业经验,资深培训师/项目管理师/云计算架构师/数据库达人

        


以上是关于云端架构之道:CDN的本质——大规模分布式多级缓存系统的主要内容,如果未能解决你的问题,请参考以下文章

多级缓存:架构设计中提升性能最直接的方式

架构实战营模块五 1.多级缓存架构

微服务架构中的多级缓存设计

一款牛逼的多级缓存架构设计方案

微服务框架 SpringCloud微服务架构 多级缓存 48 多级缓存 48.7 Redis 缓存预热

多级缓存的分层架构