CDN的全称是Content Delivery Network,即内容分发网络。它是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
简单来说,CDN就是为了网络内容访问速度“更快“而生的。那么如今的网络本身四通八达,为什么还需要CDN呢?
一、为什么需要CDN?
举个简单的例子,假设我们忽略网络传输的损耗、设备延时,网络传输速度接近光速,是30万公里每秒,从东京到美国硅谷的距离大概为1万公里,也就是说,如果你的服务器在东京,你上传了一张很小的图片,美国用户访问至少需要60毫秒。而且,这只是理论数据,现实世界中,网络环境是十分复杂的,跨地域、跨运营商、网络拥塞、抖动等问题,都会积少成多,使得延时成倍增加,还有可能访问失败,最终影响访问体验。
CDN的出现,正是为了解决这个问题。我们将这张图片分发并缓存在美国的CDN节点之上,美国用户就无需从东京获取数据,直接从就近的美国本地CDN节点获取到图片,这大大节省了传输时间,提升访问效率。CDN的节点通常会遍布全球,源站的文件会被被缓存到世界各地,这样全球用户都可以实现快速访问。
它有点像分布于各地的仓储物流点,很多品牌会预先在仓储物流点储备一些爆款商品(静态文件使用CDN进行缓存),当用户从电商平台下单购买货物的时候(用户发起请求),平台根据用户的收获地址就近匹配到最近的仓储物流点并直接进行派货(就近分发),让用户以最快的速度拿到快递包裹(分发的内容)。我们可以用实际的生活经验来做个对比,如果从江浙沪包邮区寄给杭州的用户,一般第二天就能到,如果是从北京、深圳发货,一般需要2-3天!
这就是CDN的缘起。简单来说,它就是一个分布式的缓存服务器,主要作用就是尽可能减少资源在转发、传输、链路抖动等情况下的时延,保障信息的连贯与极速。当下,我们生活在互联网世界,视频和直播在数据上有巨大的吞吐量,CDN扮演着护航者和加速者的角色,更快速、稳定地将信息触达每一个用户。
二、CDN的工作原理
下面,我们来进一步了解下CDN的工作原理。首先,关于CDN的那些名词,需要扫个盲。
接下来是CDN的工作原理,最简单的CDN网络由一个DNS服务器和几台缓存服务器组成,如下图所示:
三、CDN的关键技术组件
看似复杂庞大的CDN系统,其中有几个关键技术组件:调度、缓存和安全。
1、 调度是 CDN 中的重中之重,流量接入、流量牵引、选择合适的 CDN 节点服务器等工作,都是在调度环节完成的。
2、 缓存也叫 Cache,是 CDN 领域最重要的一个组成部分,对于静态内容分发,大至视频点播、文件下载,小至 html 页面、jpg/gif/png 图片、css/js 等,都可以缓存到本地,最终用户(网民)访问时,不必回到原始服务器拿取数据,从而节省了时间、降低了源站服务器的网络带宽支出和负载。对于 CDN 来说,每台 Cache 机器每天的请求量是十分惊人的,磁盘上所存储的内容量也多得可怕,十几块 TB 级的硬盘被塞满数据也是很正常的事情,因此当一个请求到来时,能迅速检索出磁盘上的文件并读取、吐给最终用户成了一件很重要的事情。
3、 针对各类网络攻击,比如带宽饱和攻击、反射攻击等蛮力型攻击,还有XSS跨站、SQL注入、漏洞利用等技巧型攻击,CDN可以从隐藏源站、分布式架构、安全防护三个层面进行安全防护。首先,当网站接入CDN后,源站信息会被隔离,攻击者就无法直接对源站进行直接攻击,其次,CDN天然分布式架构可以当某些节点被攻击的时候,很快察觉异常并智能调度至正常节点,确保业务稳定,再次,对于技巧性攻击,在CDN边缘节点前置安全防护能力,与中心联动形成更完整、更贴近边缘的防护策略,有利于安全隐患的拦截。