CDN-Content Delivery Network内容分发网络

一、介绍

支撑秒杀活动的CDN,是用来做内容分发的一套网络体系,最简单的应用是用来提升文件下载速度。让用户能够从离自己最近的CDN服务器进行下载,减少路由次数,提升下载速度,缩短传输时间,提升用户使用体验。

如果所有用户都到源站访问,则源站业务就成为了性能瓶颈。cdn技术把源站的内容缓存到多个节点,用户向源站域名发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点直接快速响应,有效降低用户访问延迟,提升可用性。

思想:在现有的internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。镜像也干了相同的事,但更傻一点,CDN则更加智能,添加了很多附加技术,CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。

举例来说,某电商公司在北京有一个大仓库,你在广州买了一个东西,他就从北京的仓库发货运送到广州,送到你家里。一般来说从下单到收货怎么也要3、4天时间。由于买家对物流速度意见比较大,现在电商公司决定与一家仓储公司合作,这家仓储公司在全国各地有很多个分仓。电商公司把货物提前放到仓储公司的各个分仓里。以后广州的订单就从广州分仓发货,上海的订单就从上海分仓发货。早上下单,下午就能送到了,效率提升了好多倍。用户的购物体验提升了很多。

在这里,北京的大仓库就相当于你的业务服务器,全国各地的分仓就相当于CDN服务器,仓储公司就是CDN服务商。货物就相当于要传输的数据。你的订单就相当于一个网络请求

关键挑战
1、第一公里问题,在于网站服务器接入互联网的带宽,这个带宽决定了能为用户提供的访问速度和并发访问量
2、在于互联网的传输要道,如IDC(互联网数据中心,Internet Data Center)、局域网、城域网、接入网等,有“时延”和“拥塞”的问题
3、互联网,覆盖全球,各大部分的网络独立运营,之间的互联带宽成为瓶颈
4、最后一公里问题,用户接入互联网的带宽

CDN的优势:
(1)CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
(2)大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载。

二、相关技术

1、负载均衡

负载均衡技术不仅仅应用于CDN中,在网络的很多领域都得到了广泛的应用,如服务器的负载均衡、网络流量的负载均衡。顾名思义,网络中的负载均衡就是将网络的流量尽可能均匀分配到几个能完成相同任务的服务器或网络节点上,由此来避免部分网络节点过载。这样既可以提高网络流量,又提高了网络的整体性能。

在CDN中,负载均衡又分为服务器负载均衡服务器整体负载均衡(也有的称为服务器全局负载均衡)。服务器负载均衡是指能够在同一(相近)地理位置,性能不同的服务器之间进行任务分配。而服务器整体负载均衡允许Web网络托管商、门户站点和企业根据不同地理位置分配内容和服务。通过使用多站点内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障。在CDN的方案中服务器整体负载均衡发挥了重要作用,其性能高低直接影响整个CDN的性能。

2、动态内容分发与复制技术

网站访问响应速度取决于许多因素,如网络的带宽是否有瓶颈、传输途中的路由是否有阻塞和延迟、网站服务器的处理能力及访问距离等。多数情况下,网站响应速度和访问者与网站服务器之间的距离有密切的关系。如果访问者和网站之间的距离过远,它们之间的通信就需要经过重重的路由转发和处理,网络延误不可避免。一个有效的方法就是利用内容分发与复制技术,将占网站主体的大部分静态网页、图像和流媒体数据分发复制到各地的加速节点上。所以动态内容分发与复制技术也是CDN所需的一个主要技术。

CDN服务只可以用于静态数据的加速,动态接口不能使用CDN服务。服务器上的资源分为两种:静态资源与动态资源。静态资源通常是很少变动的,比如图片,视频,css,javascript等等;动态资源,不同用户不同时刻访问通常是不一样的,比如ftl,jsp等等。那么如果要在全国各地都部署服务器,如果每个服务器上都有相同的动态资源,那么可能还需要配置相应的数据库,因为动态资源所记录的信息通常会存储在数据库中,那么这就涉及到了数据同步等等问题,这会导致成本很高,这种做法专业一点其实就是集群,而目前来说集群架构最多是三地五中心,不是说全国多地集群不可能,主要是成本太高。所以就只在每个服务器上部署静态资源,通常不涉及数据库,所以成本也比较低,而且也能提高用户的访问速度。

3、缓存技术

缓存技术已经不是一种新鲜技术。Web缓存服务通过几种方式来改善用户的响应时间,如代理缓存服务、透明代理缓存服务、使用重定向服务的透明代理缓存服务等。通过Web缓存服务,用户访问网页时可以将广域网的流量降至最低。对于公司内联网用户来说,这意味着将内容在本地缓存,而无须通过专用的广域网来检索网页。对于Internet用户来说,这意味着将内容存储在他们的ISP的缓存器中,而无须通过Internet来检索网页。这样无疑会提高用户的访问速度。

4、其他技术

拓扑管理、链路监控、设备管理、客户管理、计费管理、统计分析

三、CDN工作流程

1、用户访问已经加入CDN服务的网站
2、通过DNS重定向技术确定最接近用户的最佳CDN节点,将用户的请求指向该节点
3、用户的请求到达指定节点,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户

更具体一点:

1、 用户在自己的浏览器中输入要访问的网站的域名
2、浏览器向本地DNS请求对该域名的解析
3、本地DNS将请求发到网站的主DNS
4、主DNS根据一系列的策略确定当时最适当的CDN节点
5、主DNS将解析的结果(IP地址)发给用户
6、用户向给定的CDN节点请求相应网站的内容。

四、关键问题

要比较不同CDN系统的性能,我们可以考虑两点:

1、CDN系统中存储静态资源服务器的性能以及网速怎么样。
2、CDN系统中全国甚至全球范围内服务器节点的数量以及部署情况。

有公司看到了这种需求,所以现在其实有很多CDN供应商,比如阿里,腾讯等等都有自己的CDN服务。只要你自己的系统接入了这些大厂所提供的CDN服务,你把自己的静态资源传给CDN服务,那么这些静态资源将自动的分布到全世界各地去。

1、特殊的DNS服务器

用户在访问静态资源时也是通过域名来访问的,域名会被解析成某一个IP地址,关键的问题就是,DNS系统怎么在做域名解析时,解析出来一个离用户最近的一个IP地址呢。

普通的DNS系统是做不到的,需要一个特殊的DNS服务器,这个特殊DNS需要知道用户当前所在位置,还需要知道用户现在访问的这个域名对应哪些IP地址,以及这个IP地址分别在哪?

第一个问题好解决,直接从用户请求里提取出用户的ip地址,比如这个ip地址被解析为北京电信、上海移动等等。第二个问题由谁来解决,我们现在考虑的是CDN,CDN提供商肯定知道他们公司在哪些地方部署了机器以及它们的IP地址,所以这个问题只能有CDN提供商来解决,CDN提供商会提供这个特殊的DNS服务器,我们叫做CDN专用DNS服务器

这样的话,只要用户在使用某个域名访问静态资源时,如果用户直接配置自己电脑的DNS地址为CDN专用DNS服务器。那么自然解决了问题,但是我们需要考虑的时,我们不能要求世界上所有的用户都去修改自己电脑的DNS地址。所以这个时候就要利用DNS中的CNAME了。

用户使用某个域名来访问静态资源时(这个域名在阿里CDN服务中叫做“加速域名”),比如这个域名为“image.baidu.com”,它对应一个CNAME,叫做“cdn.ali.com”,那么普通DNS服务器(区别CDN专用DNS服务器)在解析“image.baidu.com”时,会先解析成“cdn.ali.com”,普通DNS服务器发现该域名对应的也是一个DNS服务器,那么会将域名解析工作转交给该DNS服务器,该DNS服务器就是CDN专用DNS服务器。CDN专用DNS服务器对“cdn.ali.com”进行解析,然后依据服务器上记录的所有CDN服务器地址信息,选出一个离用户最近的一个CDN服务器地址,并返回给用户,用户即可访问离自己最近的一台CDN服务器了。
在这里插入图片描述
参考来源:程序员要搞明白CDN,这篇应该够了

猜你喜欢

转载自blog.csdn.net/weixin_48288539/article/details/125654263