CDN 概念
CDN 代表内容交付网络。其基本思想是尽可能避免可能影响互联网上数据传输速度和稳定性的瓶颈和环节,让内容传输更快、更稳定。
通过在网络各处放置节点服务器,在现有互联网的基础上形成一层智能虚拟网络,CDN系统可以实时根据网络流量和每个节点的连接和负载状态,以及距离对用户和响应时间等综合信息将用户的请求重定向到离用户最近的服务节点。其目的是让用户就近获得想要的内容,解决网络拥塞的情况,提高用户访问网站的响应速度。
不同地区的用户访问网站的响应速度存在差异。为了提高用户访问的响应速度,优化现有信息的流动,需要在用户和服务器之间增加一个中间层CDN。它使用户能够以最快的速度从离用户最近的地方获取所需的信息,彻底解决网络拥塞问题,提高响应速度。是目前大型网站常用的应用方案。
CDN的诞生
1980年代,互联网技术刚刚进入民用领域。
人们主要通过拨号上网,带宽很低,用户也很少,所以对骨干网和服务器没有压力。
随着互联网的爆炸式发展,用户越来越多,宽带接入网的出现,内容源服务器和骨干网承受的压力越来越大,无法及时响应用户的接入需求。
1995年,美国麻省理工学院教授、互联网发明者之一的蒂姆-李博士发现网络拥塞越来越严重,将成为互联网发展的最大障碍。
因此,他提出了一个学术问题,希望有人能发明一种从根本上解决问题的新方法,以实现互联网内容的无拥塞分发。
当时,Tim-Lee 博士的隔壁是汤姆教授的办公室。他是麻省理工学院应用数学教授。
汤姆
对 -Lee 的挑战很感兴趣,他请研究生 Danny C. Lewin 和其他几位顶尖研究人员破解技术难题。
丹尼·C·勒温
最终,他们开发了一种动态路由算法技术,该技术使用数学算法来处理内容,有效地解决了这个问题。这项技术就是CDN。
他们还专门为此成立了一家公司,以充分发挥其商业价值。这家公司就是后来著名的CDN服务的鼻祖——公司。
CDN原理
首先,CDN是为了提高互联网的服务质量。简单来说,就是提高访问速度。
假设百度网站只有一台服务器,上海有一个人访问百度。如果服务器也在上海,通常访问速度会更快。如果服务器在拉萨,访问速度比较慢。那么这个问题的根本原因是网络传输依赖于网线。网线越长,时间一定越长。
那么如何解决这个问题呢?其实这个想法很简单。百度在全国部署完全相同的服务器,这称为冗余。
想法很简单,但实现起来相当麻烦。服务器上的资源分为两种:静态资源和动态资源。
那么如果百度要在全国部署服务器,如果每台服务器的动态资源相同,可能还需要配置相应的数据库,因为动态资源记录的信息一般都存储在数据库中,那么这个就涉及到数据了同步等问题,这将导致高成本。这种做法其实就是聚类。目前,集群结构最多为三地五中心。这并不意味着在全国多个地方出现集群是不可能的。主要原因是成本太高。高的。
那么有没有更低成本的方法呢?是的,就是在每台服务器上只部署静态资源。静态资源通常不涉及数据库,所以成本也比较低,也可以提高用户的访问速度。
至此,我已经介绍了CDN想要达到的目的,那么如何达到这个目的呢?
现在如果我们要比较 CDN 系统,我们可以考虑两点:
CDN系统中存储静态资源的服务器的性能和网速如何。
CDN系统中全国乃至全球服务器节点的数量和部署情况。
第一点好理解,第二点大家也应该明白。如果静态资源的服务器节点很多,每个用户都可以访问这些静态资源,而不必“跑很远”去获取,那么自然这就是CDN系统的优势。
有的公司看到了这个需求,所以其实有很多CDN提供商,比如阿里巴巴、腾讯等,都有自己的CDN服务。只要你自己的系统接入了这些大厂商提供的CDN服务,你将自己的静态资源传递给CDN服务,这些静态资源就会自动分发到世界各地。
那么现在的问题是,用户在访问静态资源的时候,也是通过域名来访问的,域名会被解析到某个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服务中称为“加速域名”),例如域名为“”,对应一个名为“”的CNAME,则普通DNS服务器(不同于CDN特有的DNS)解析“”时,会先解析为“”。普通DNS服务器发现域名对应一台DNS服务器,然后将域名解析工作交给DNS服务器,也就是CDN专用DNS服务器。CDN专用DNS服务器解析“”,然后根据服务器上记录的所有CDN服务器地址信息,选择离用户最近的CDN服务器地址,返回给用户,以便用户访问最近的CDN服务器地址。服务器。
CDN技术其实并不复杂。最初的核心思想是将内容缓存在最终用户附近。
内容源不远吗?然后,我们在靠近用户的地方建一个缓存服务器,把远程的内容复制一份,放到这里,是不是可以?
因为这种技术分发内容,所以它的名字叫做CDN——内容分发网络。
具体来说,CDN 使用较多的缓存服务器(CDN 边缘节点),这些缓存服务器部署在用户访问相对集中的区域或网络中。当用户访问网站时,利用全局加载技术将用户的访问定向到就近的缓存服务器,缓存服务器响应用户的请求。(有点像电子商务的本地仓库,对吧?)
你可能认为这不是“镜像服务器”?其实不一样。镜像服务器是源内容服务器的完整副本。另一方面,CDN 是一些内容的缓存,并且更智能。
准确的说,CDN = 智能镜像 + 缓存 + 分流。
还需要注意的是,CDN不仅可以缓存视频内容,还可以分发网站静态资源(如各类图片、html、css、js等)打包apk文件、APP中的图片和视频,等)进行分发。
我们举个例子来看看CDN的具体工作流程。
如果用户想要访问优酷的视频点播内容,那么:
具体步骤:
①。当用户点击APP上的内容时,APP会根据URL地址到本地DNS(域名解析系统)进行IP地址解析。
②。本地 DNS 系统会将域名的解析权交给 CDN 专用 DNS 服务器。
3、CDN专用DNS服务器将CDN的全局负载均衡设备的IP地址返回给用户。
④。用户向CDN负载均衡设备发起内容URL访问请求。
⑤。CDN负载均衡设备根据用户的IP地址和用户请求的内容URL,在用户所在区域选择缓存服务器。
⑥。负载均衡设备告诉用户缓存服务器的IP地址,并允许用户向选定的缓存服务器发起请求。
⑦。用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户需要的内容传送给用户终端。
8. 如果缓存服务器没有用户想要的内容,那么缓存服务器会向网站的源服务器请求内容。
⑨。源站将内容返回给缓存服务器,缓存服务器将其发送给用户,根据用户自定义的缓存策略,决定是否将内容缓存到缓存服务器上。
CDN 的好处
使用CDN技术最大的好处就是加快了网站的访问速度——缩短了用户与内容之间的物理距离,也缩短了用户的等待时间。
此外,分布在不同线路的缓存服务器也加快了跨运营商的访问速度。
例如,中国移动的手机用户可以通过在中国移动设置CDN服务器来加速访问中国电信网络的内容源。效果非常明显。
此外,CDN 具有安全优势。内容分发后,源站IP被隐藏,被攻击的概率会大大降低。此外,当某台服务器出现故障时,系统会调用附近健康的服务器进行服务,以免影响用户。
由于 CDN 的诸多好处,所有主流互联网服务提供商都采用了 CDN 技术。所有云服务商也提供CDN服务(价格不贵,按流量计费)。
CDN和通信行业
CDN是从传统IT行业发展而来的服务。但是,对于我们的通信行业来说,CDN也有很大的商业价值。
服务提供商使用 CDN 来交换存储以换取延迟。花钱购买 CDN 服务器或云计算服务,以换取更好的用户体验。
通信运营商也在追求CDN,但他们的目的是用存储换取带宽——通过业务“下沉”,缓解上层骨干网的流量压力,避免硬件扩容,降低建网成本。
这很容易理解。如果大量的业务流量数据在骨干网周围运行,那么骨干网肯定会不堪重负,迫切需要扩容。如果这些业务流量数据在底层得到解决,骨干网的带宽压力自然会得到缓解。是不是?
很多运营商都将CDN下沉到地级,以减轻压力,提升用户体验。
说到这里,广大通讯王有没有想到什么?
是的,这类似于前几天推出的移动边缘计算。
一直以来,随着网络能力的不断提升,内容资源和计算能力都在向云计算中心“上去”。核心云计算中心为所有终端节点提供服务。
结果人们回过头来发现,对于非常大的区域百度cdn加速服务器,非常多的用户,尤其是国家级或者世界级的服务,无论你把中心放在哪里,无论你的中心有多强大,都无法战胜物理距离障碍,导致无法忍受的延迟和网络拥塞。
此后,人们开始部分“下沉”云计算中心,这也是雾计算和雾霾计算应运而生的原因。甚至人们开始质疑集中计算最终会不会被分布式计算所取代?
使用 CDN 访问表单
对于CDN客户,不需要改变网站结构,只需要修改自己的DNS解析,设置一个CNAME指向CDN服务商即可。下面将解释其原理。通过上图我们可以了解到网站使用CDN缓存后的访问过程变成了:
CDN关键技术
1.缓存算法【Squid】;2、配送能力;3.负载均衡[Nginx](4.基于DNS[BIND]);5、支持协议;
缓存算法决定命中率、源服务器压力、POP节点存储容量
分销能力取决于IDC能力和IDC战略分销
负载平衡(智能调度)确定最佳路由、响应时间、可用性、服务质量
基于 DNS 的负载均衡使用 CNAME[to] 实现,智取最优节点服务,
缓存点包括客户端浏览器缓存、本地DNS服务器缓存
缓存内容包括 DNS 地址缓存、客户端请求内容缓存和动态内容缓存
支持静态和动态加速(图片加速、带证书加速的https)、下载加速、流媒体加速、企业应用加速、移动应用加速等协议。