定义:

   CDN 即内容分布网络,(Content Delivery Netwrok) ,是构筑在现有Internet上的一种先进的流量分配网络,其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的相应速度。有别于镜像,但是比镜像更智能,可以做个比喻:

CDN = 镜像(mirror)  + 缓存(cache) + 整体负载均衡(GSLB) , 所以,CDN 可以明显提高网络中的信息流动的效率。

目前CDN 都以缓存网站中的静态数据为主,如CSS,JS ,图片和静态页面等数据,运营商的宽带电视网络除外,以移动为例,移动的宽带电视CDN,则是以节目资源为主。  用户在从主站服务器请求到动态内容后,再从CDN 下载这些缓存数据,从而加速网页数据内容的下载速度,比如淘宝。90%以上的数据都是由CDN 来提供的。

CND 达到的要求:

可扩展性:  

   性能可扩展: 为应对新增的大量数据,用户和事务的扩展能力。

成本可扩展:用低廉的运营成本提供动态的服务能力和高质量的内容分发。

安全性:

强调提供物理设备,网络,软件,数据和服务过程的安全性(趋势) 减少因为DDoS 攻击或者其他恶意行为造成的商业网站业务中断

可靠,相应和执行性:

服务可用性指能够处理可能的故障和用户体验下降的问题,通过负载均衡及时提供网络的容错机制。

CDN 架构:

Web 请求过程

如果是访问某个静态文件 如CSS,这个静态文件的地址比如是www.baidu.com。则会首先向Local DNS 服务器发起请求,经过迭代解析后,会回到这个域名的注册服务器去解析,一般公司都会有一个DNS解析服务器,这时这个DNS 服务器通常会把它重新CNAME 解析到另外一个域名,而这个域名最终会被指向CDN 全局中的DNS 负载均衡器,再由这个GTM 来最终分配是哪个地方的访问用户,返回给离这个访问用户最近的CDN节点。拿到DNS 解析结果,用户就会直接去这个CDN节点访问这个静态文件了 。如果这个节点中所请求的文件不存在,就会再回到源站去获取这个文件,然后再返回给用户。

负载均衡:

负载均衡就(Load Balance) 就是对工作任务进行平衡,分摊到多个操作单元,服务器上进行执行吗,比如专门的图片服务器,应用服务器,Web服务器等,共同完成工作任务,它可以提高服务器响应速度以及利用效率,避免软件或者硬件的模块出现单点失效,解决网络拥塞问题,实现地理位置的无关联性,提供较为一致的访问质量,是分布式系统的精髓所在。

三种负载均衡的架构:

链路负载均衡,集群负载均衡,操作系统负载均衡。

链路负载均衡:

即通过DNS 解析成不同的IP,然后用户通过IP 来访问不同的目标服务器。这种负载均衡是由DNS的解析来完成的,用户最终访问哪个Web服务器是由DNS Server来控制的,在这里就是下面的Global DNS Server来动态解析域名服务,这种DNS 解析的有点是用户会直接访问目标服务器,不需要经过其他代理的服务器,速度快,但是因为DNS 在用户本地和Local DNS Server 都有缓存,如果某台Web服务器挂了,那么就很难及时更新用户的域名解析结构。如果用户域名没有更新,那么就会无法访问该域名。

集群负载均衡:

集群负载是另外一种常见的负载均衡方式,它一般分为硬件负载和软件负载,硬件负载使用一台专门的硬件设备来进行请求的转发,如图,恰恰硬件负载均衡的关键就是这台转发请求的设备,这是一台非常昂贵的设备,通常为了安全需要,一主一备,优点是性能非常好,缺点就是非常昂贵,一般公司是用不起的,而且当访问量突然增大超出服务器极限的时候,不能进行动态的扩容。

硬件负载均衡

软件负载均衡: 这是使用最普遍的一种方式,使用成本非常低,直接使用简单的PC 就可以搭建,当然缺点就是一般一次访问请求需要经过多次代理服务器,会增加网络的延时,如图。上面两台LVS,使用四层负载均衡, 即在网络层利用IP地址进行地址转发,下面三台使用HAProxy 进行七层负载,可以根据访问用户的HTTP请求头进行负载均衡,比如可以根据不同的URL 来将请求转发到特定的机器或者根据用户的Cookie信息来指定访问的机器。

操作系统负载均衡:

就是利用操作系统级别的软中断或者硬件中断来达到负载均衡,比如设置多队列的网卡等,来实现。

CDN 动态加速:

CDN 动态加速技术也是当前比较流行的一种优化技术,它的技术原理就是在CDN 的DNS 解析中通过动态的链路探测来寻找回源最好的一条路径,然后通过DNS的调度,将所有请求调度到选定的这条路径上回源,从而加速访问效率,如图.由于CDN 是遍布全国的,所以用户接入一个CDN 节点后,可以选择一条从离用户最近的CDN 节点到源站链路最好的路径让用户走,一个简单的原则就是在每个CDN 节点上从源站下载一个一定大小的文件,看哪个链路的总耗时最短,这样可以构成一个链路列表,然后绑定到DNS 解析上,更新到Local DNS ,当然,是否走这个链路并不一定根据耗时这个唯一条件,有时也要考虑网络成本,比如走该节点可以节约5ms,但是网络带宽成本却增加了很多,还有其他网络链路的安全等等的因素也要考虑。

CDN工作机制和负载均衡的更多相关文章

  1. CDN技术之--全局负载均衡(GSLB)

    负载均衡就是智能调度全局负载均衡(GSLB)的负载均衡主要是在多个节点之间进行均衡,其结果可能直接终结负载均衡过程,也可能将用户访问交付下一层次的(区域或本地)负载均衡系统进行处理.GSLB最通用的是 ...

  2. HDFS 02 - HDFS 的机制:副本机制、机架感知机制、负载均衡机制

    目录 1 - HDFS 的副本机制 2 - HDFS 的机架感知机制 3 - HDFS 的负载均衡机制 参考资料 版权声明 1 - HDFS 的副本机制 HDFS 中的文件,在物理上都是以分块(blo ...

  3. CDN工作机制

    CDN(content delivery network),即内容分布网络,是一种构建在现有Internet上的一种先进的流量分配网络.CDN以缓存网站中的静态数据为主,当用户请求动态内容时,先从CD ...

  4. 负载均衡技术在CDN中发挥着重要作用

    转载地址:http://www.qicaispace.com/gonggao/server/page01/info07.asp CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储.负载均衡 ...

  5. Web负载均衡的几种实现方式

    Web负载均衡的几种实现方式摘要:负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是 ...

  6. IIS Web负载均衡的几种方式

    Web负载均衡的几种实现方式 摘要:负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用 ...

  7. Web负载均衡的几种方式

    Web负载均衡的几种实现方式 摘要:负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用 ...

  8. Web负载均衡学习笔记之实现负载均衡的几种实现方式

    0x00 概要 负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是Web负载均衡.根 ...

  9. [转]Nginx负载均衡原理初解

    什么是负载均衡 我们知道单台服务器的性能是有上限的,当流量很大时,就需要使用多台服务器来共同提供服务,这就是所谓的集群. 负载均衡服务器,就是用来把经过它的流量,按照某种方法,分配到集群中的各台服务器 ...

随机推荐

  1. div布局之面向对象

    栗子之导航条(navbar) http://www.runoob.com/try/try2.php?filename=bootstrap-using-glyphicons-navbar <!DO ...

  2. Bash特殊变量:$0, $#, $*, $@, $?, $$实战

    在linux下配置shell参数说明 前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid ...

  3. SSH免密码登录Linux服务器

    作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=587 操作环境: 客户机操作系统:Ubuntu Linux 服务器操作系统:CentOS Linux 免密登陆的原理: ...

  4. 配置服务器nginx 教程

    https://www.cnblogs.com/wangzhongqiu/p/6527346.html

  5. jQuery学习之旅 Item10 ajax快餐

    1. 摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现A ...

  6. Android 源码解析 之 setContentView

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41894125,本文出自:[张鸿洋的博客] 大家在平时的开发中,对于setCont ...

  7. 【codeforces 718 C&D】C. Sasha and Array&D. Andrew and Chemistry

    C. Sasha and Array 题目大意&题目链接: http://codeforces.com/problemset/problem/718/C 长度为n的正整数数列,有m次操作,$o ...

  8. 【最小生成树】Bzoj1601[Usaco2008 Oct]灌水

    Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. ...

  9. BZOJ_3436_小K的农场_差分约束

    BZOJ_3436_小K的农场_差分约束 题意: 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个),以下列三种形式描述 ...

  10. ll 和 ls -l的详解

    ll会列出该文件下的所有文件信息,包括隐藏文件 而ls -l 只会列出显示文件 ll 命令列出的信息更加详细,有时间,是否可读写等信息 ll命令和ls -l命令结果区别: 上面结果说明: 各个字段的含 ...