当前位置: 首页 > news >正文

一张图说明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.请求结果发给用户。

 

CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现,这就是CDN的最基本的原理,当然很多细节没有涉及到,比如第1步,首先向本地的DNS服务器请求。第5步,内容淘汰机制(根据TTL)等。但原理大体如此。

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

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

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

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

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

转载于:https://www.cnblogs.com/wish123/p/5540177.html

相关文章:

  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之95——BREW中的典型上有测试TBT...
  • 我的程序库:HiCSUtil
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之96——BREW中运营商管理的测试UBT...
  • echarts学习网站
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之97——BREW的应用管理器...
  • QTableWidget嵌入QpushButton后定位QpushButton
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之98——BREW中RUIM的相关问题...
  • Linux strace命令使用详解
  • wireshark在ubuntu系统中的正确安装方法
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之99——BREW中的应用删除和召回...
  • 数据存储——SQLite数据库存储——API
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之100——BREW中绚丽多彩的应用...
  • 001.[python学习]写在前面的
  • 数据文件丢失的处理
  • Python for Infomatics 第14章 数据库和SQL应用一(译)
  • “大数据应用场景”之隔壁老王(连载四)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【node学习】协程
  • Django 博客开发教程 16 - 统计文章阅读量
  • docker-consul
  • Docker容器管理
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • js ES6 求数组的交集,并集,还有差集
  • Python - 闭包Closure
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Terraform入门 - 3. 变更基础设施
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 机器学习中为什么要做归一化normalization
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 世界上最简单的无等待算法(getAndIncrement)
  • 项目实战-Api的解决方案
  • 小程序测试方案初探
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #13 yum、编译安装与sed命令的使用
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (7)STL算法之交换赋值
  • (Java)【深基9.例1】选举学生会
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)计算机毕业设计大学生兼职系统
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (转)创业的注意事项
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .bashrc在哪里,alias妙用
  • .Family_物联网
  • .net 受管制代码
  • .net 中viewstate的原理和使用
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .Net语言中的StringBuilder:入门到精通
  • .project文件
  • /etc/fstab和/etc/mtab的区别