CDN如何实现,关键技术是什么?

转载自  CDN如何实现,关键技术是什么?

CDN原理            

CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现,这就是CDN的最基本的原理。如下图:

图中各点含义如下:

1.用户向浏览器输入www.web.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求;

2.网站的DNS域名解析器设置了CNAME,指向了www.web.51cdn.com,请求指向了CDN网络中的智能DNS负载均衡系统;

3.智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;

4.用户向该IP节点(CDN服务器)发出请求;

5.由于是第一次访问,CDN服务器会向原web站点请求,并缓存内容;

6.请求结果发给用户。

当然很多细节没有涉及到,比如第1步,首先向本地的DNS服务器请求。第5步,内容淘汰机制(根据TTL)等。但原理大体如此。

当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用 户的节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在世界各地的所有CDNC节点保持通信,搜集各节点的通信状态,确保不将用户的请求 分配到不可用的CDN节点上,实际上是通过DNS做全局负载均衡。

对于普通的Internet用户来讲,每个CDN节点就相当于一个放置在它周围的WEB。通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求。由于它离用户更近,因而响应时间必然更快。

CDN节点

每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器。

负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。CDN的管理系统是整个系统能够正常运转的保证。它不仅能对系统中的各个子系统和设备进行实时监控,对各种故障产生相应的告警,还可以实时监测到系统中 总的流量和各节点的流量,并保存在系统的数据库中,使网管人员能够方便地进行进一步分析。通过完善的网管系统,用户可以对系统配置进行修改。

CDN网络

理论上,最简单的CDN网络有一个负责全局负载均衡的DNS和各节点一台Cache,即可运行。DNS支持根据用户源IP地址解析不同的IP,实现 就近访问。为了保证高可用性等,需要监视各节点的流量、健康状况等。一个节点的单台Cache承载数量不够时,才需要多台Cache,多台Cache同时 工作,才需要负载均衡器,使Cache群协同工作。


CDN关键技术:     

1.缓存算法[Squid];

2. 分发能力;

3. 负载均衡[Nginx]

4. 基于DNS[BIND];

5. 支持协议;

缓存算法决定命中率、源服务器压力、POP节点存储能力。

分发能力取决于IDC能力和IDC策略性分布。

负载均衡(智能调度)决定最佳路由、响应时间、可用性、服务质量。

基于DNS的负载均衡以CNAME实现[to cluster],智取最优节点服务,

缓存点有客户端浏览器缓存、本地DNS服务器缓存。

缓存内容有DNS地址缓存、客户请求内容缓存、动态内容缓存。

支持协议如静动态加速(图片加速、https带证书加速)、下载加速、流媒体加速、企业应用加速、手机应用加速。

CDN提供一种机制,当用户请求内容时,该内容能够由以最快速度交付的Cache来向用户提供,这个挑选“最优”的过程就叫做负载均衡。

从功能上看,典型的CDN系统由分发服务系统,负载均衡系统和运营管理系统组成。

 分发服务系统:

最基本的工作单元就是Cache设备,cache(边缘cache)负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用 户。同时cache还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。Cache设备的数量、规模、总服务能力是衡 量一个CDN系统服务能力的最基本的指标

负载均衡系统:

主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡(GSLB)和本 地负载均衡(SLB)。GSLB主要根据用户就近性原则,通过对每个服务节点进行“最优”判断,确定向用户提供服务的cache的物理位置。SLB主要负 责节点内部的设备负载均衡

运营管理系统:

分为运营管理和网络管理子系统,负责处理业务层面的与外界系统交互所必须的收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。

负责为用户提供内容服务的cache设备应部署在物理上的网络边缘位置,即CDN边缘层。CDN系统中负责全局性管理和 控制的设备组成中心层(二级缓存),中心层同时保存着最多的内容副本,当边缘层设备未命中时,会向中心层请求,如果在中心层仍未命中,则需要中心层向源站 回源(如果是流媒体,代价很大)。

CDN骨干点和CDN POP点在功能上不同,中心和区域节点一般称为骨干点,主要作为内容分发和边缘未命中时的服务点;边缘节点又被称为POP(point of presence)节点,CDN POP点主要作为直接向用户提供服务的节点。

应用协议加速:

企业应用加速主要是动态加速和SSL加速。

广域网应用加速:

SSL应用加速:由于需要大量的加密解密运算,SSL应用对服务器端的资源消耗是非常巨大的。CDN提供SSL应用加速后,由CDN的专用SSL加速硬件来完成加密解密运算工作。

网页压缩:HTTP1.1提出对网页压缩的支持。在服务器端可以先对网页数据进行压缩,然后将压缩后的文件提供给访问用户,最后在用户浏览器端解压显示(但要衡量加解压时间)。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

35 岁程序员的独家面试经历

35 岁程序员的独家面试经历 2015年12月15日 17:34:33 松门一枝花 阅读数:524 创业失败后,在找工作。选择了三家(两家上市公司,一家将上市),都走到了关键的节点。我记录了面试过程中被问到的一些问题&…

国庆假期请假公告

公众号运营从开始到今天,运营了接近2年时间,每天更新成了一个必备功课,有时候很辛苦,有时候也是很累,但想到公众号里有很多的朋友的期待,就会一次次的拿起电脑开始码字。 公众号不谈国事,不论风…

php中对象的遍历输出,PHP中的对象遍历技巧

PHP中的对象遍历对象的遍历,主要是指遍历对象中的,对外部可见属性。实际上就是用访问限制符public声明的属性,这点大家肯定很熟悉了。并且,在php中,遍历对象居然与遍历数组一样,都可以用使用foreach语句。好,下面用实例…

数据库连接池的选择及其开发配置

转载自 数据库连接池的选择及其开发配置 一、数据库连接池概述 数据库连接的建立是一种耗时、性能低、代价高的操作,频繁的数据库连接的建立和关闭极大的影响了系统的性能。数据库连接池是系统初始化过程中创建一定数量的数据库连接放于连接池中,当程序…

C#在Linux+Mono环境中使用微信支付证书

最近特殊的需求,要把微信平台一个功能页面部署到Linux(CentOS6.5)下,其中涉及到微信支付退款。 鉴于之前实践过monojexusasp.net mvc的部署,于是问题重点在于解决对商户证书的调用问题。 查看微信支付官方文档关于证书…

mysql切换用户sql语句,MySQL用户管理及SQL语句详解

[(none)]>select user,host frommysql.user; #查询用户和主机--------------------------| user | host |--------------------------| root | 10.0.0.% || mysql.session | localhost || mysql.sys | localhost || root | localhost |--------------------------4 rows in …

其他

关于程序员的文章 2014年05月01日 16:58:25 a8511119 阅读数:300 中国有很多小朋友,他们18,9岁或21,2岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细节相当出众,也很有钻研精神&#xff0…

Java经典面试题一

转载自 Java经典面试题一 题目一 面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1.抽象: 抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些…

微信小程序这么火,到底会对C#开发者带来怎样的改变

在9月22日凌晨,微信公众平台开始陆续对外发出小程序的内测邀请,小程序也立即成为被外界广为关注的微信“应用号",9月23日的福州 2016腾讯全球合作伙伴大会上,腾讯COO、游戏和无线业务的掌舵人、腾讯首席运营官任宇任宇昕提到…

php js 验证码,js实现验证码的方法

验证码的生命周期在web应用中,验证码常用于登录注册。验证码本质就是一张图片。我们来看一下验证码的生命周期:客户端请求验证码服务端渲染验证码:渲染一张包含随机字符串的图片随机字符串写入session读取图片并返回响应客户端提交&#xff1…

区间数多属性决策matlab,区间数多属性决策的改进理想解法

Interval Multiple Attribute Decision Making Based on the Improved Technique for Order Preference by Similarity to Ideal Solution1、School of Economics and Management, Southwest Jiaotong University2、Deaprtment of Mathematics, North Sichuan Medical CollegeA…

.NET 标准介绍

本文介绍如何使用 .NET 标准,更容易地实现向 .NET Core 迁移。文中会讨论计划包含的 APIs,跨构架兼容性如何工作以及这对 .NET Core 意味着什么。 如果你对细节感兴趣,这篇文章正是为你准备的;如果你没有那么多时间或者对细节并不…

HTTP 返回码详解

转载自 HTTP 返回码详解200 服务器成功返回网页 404 请求的网页不存在 503 服务不可用1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。 100(继续)请求者应当继续提出请求。 服务器返回此代码表示已收到请求…

银行营业网点管理系统——entity类(Branches)

package BranchesMgr.entity; /*** * author Administrator*网点信息表*/ public class Branches {private int id;private String name;private int cityAreatyid;private String cityName;public String getCityName() {return cityName;}public void setCityName(String cit…

自己的php工具,用PHP自己编写的站长工具箱

前沿: 看到站长之家的站长工具很强大,所以也想自己试着实现一些其中的功能,由于本人只具有初阶的php技术,所以便用php一些函数实现了部分功能。主要功能包括:正则表达式测试工具,MD5和SHA1加密工具&#xf…

轻量级的web框架[Nancy On .Net Core Docker]

.net core现在已经有了大的发展,虽然笔者现在已经从事python开发,但是一直在关注.net的发展,在逛博客园的时候,发现有大家都会提到Nancy这个框架,在简单的使用之后,发现竟然是如此的简单而优雅 public cla…

Git使用中的一些奇技淫巧

转载自 Git使用中的一些奇技淫巧Git作为当今最流行的分布式代码版本管理系统,它的出现改变了软件的开发流程,大大地提高了开发流畅度。 本人使用Git也有一段时间了,一直都只是使用一些最最基本的几个命令,对于不复杂的代码工程来…

oracle 更新参数,Oracle动态、静态参数参数修改规则

首先,查看要修改的oracle参数的属性(动态or静态)SQL> select name,value,isses_modifiable,issys_modifiable from V$PARAMETER where namemax_dump_file_size;注:isses_modifiable 为Y,session级别修改的参数,SQL>alter se…