首页 > 其他分享 >CDN的实现原理

CDN的实现原理

时间:2023-02-22 02:33:05浏览次数:21  
标签:负载 缓存 实现 CDN 用户 访问 原理 节点

一、是什么

CDN (全称 Content Delivery Network),即内容分发网络

构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术

简单来讲,CDN就是根据用户位置分配最近的资源

于是,用户在上网的时候不用直接访问源站,而是访问离他“最近的”一个 CDN 节点,术语叫边缘节点,其实就是缓存了源站内容的代理服务器。如下图:

二、原理分析

在没有应用CDN时,我们使用域名访问某一个站点时的路径为

用户提交域名→浏览器对域名进行解释→DNS 解析得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复

应用CDN后,DNS 返回的不再是 IP 地址,而是一个CNAME(Canonical Name ) 别名记录,指向CDN的全局负载均衡

CNAME实际上在域名解析的过程中承担了中间人(或者说代理)的角色,这是CDN实现的关键

负载均衡系统

由于没有返回IP地址,于是本地DNS会向负载均衡系统再发送请求 ,则进入到CDN的全局负载均衡系统进行智能调度:

  • 看用户的 IP 地址,查表得知地理位置,找相对最近的边缘节点

  • 看用户所在的运营商网络,找相同网络的边缘节点

  • 检查边缘节点的负载情况,找负载较轻的节点

  • 其他,比如节点的“健康状况”、服务能力、带宽、响应时间等

结合上面的因素,得到最合适的边缘节点,然后把这个节点返回给用户,用户就能够就近访问CDN的缓存代理

整体流程如下图:

缓存代理

缓存系统是 CDN的另一个关键组成部分,缓存系统会有选择地缓存那些最常用的那些资源

其中有两个衡量CDN服务质量的指标:

  • 命中率:用户访问的资源恰好在缓存系统里,可以直接返回给用户,命中次数与所有访问次数之比
  • 回源率:缓存里没有,必须用代理的方式回源站取,回源次数与所有访问次数之比

缓存系统也可以划分出层次,分成一级缓存节点和二级缓存节点。一级缓存配置高一些,直连源站,二级缓存配置低一些,直连用户

回源的时候二级缓存只找一级缓存,一级缓存没有才回源站,可以有效地减少真正的回源

现在的商业 CDN命中率都在 90% 以上,相当于把源站的服务能力放大了 10 倍以上

三、总结

CDN 目的是为了改善互联网的服务质量,通俗一点说其实就是提高访问速度

CDN 构建了全国、全球级别的专网,让用户就近访问专网里的边缘节点,降低了传输延迟,实现了网站加速

通过CDN的负载均衡系统,智能调度边缘节点提供服务,相当于CDN服务的大脑,而缓存系统相当于CDN的心脏,缓存命中直接返回给用户,否则回源

参考文献

  • https://zh.wikipedia.org/wiki/內容傳遞網路
  • https://juejin.cn/post/6844903890706661389#heading-5
  • https://blog.csdn.net/lxx309707872/article/details/109078783

标签:负载,缓存,实现,CDN,用户,访问,原理,节点
From: https://www.cnblogs.com/chccee/p/17143069.html

相关文章

  • C++面对对象:实现string类
    1//string.h2#pragmaonce3classString{4public:5String(constchar*cstr=0);6String(constString&str);7~String();89......
  • pymysql通过DBUtils实现连接池技术
    DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。一、安装pipinstallDBUtils二、导入模块#针对不同版本,可能导入方式存......
  • ECharts连接数据库的具体实现
    相关描述我们由之前的实例可以得知,要是不连接数据库的话,只是需要套用一下ECharts的相关模板即可,这部分内容我在前几篇中已经叙述过了;现在,我们需要实现的是,将数据库里面的......
  • ssm学习笔记23001-mybatis接入和数据库连接实现一个插入数据的操作
    mybatis:是什么,用来干嘛的,同类竞品中有何种优势?mybatis在idea中的引入:1、创建一个空工程2、创建一个空的maven文件:会自动生成一个pox文件,打包类型配置为jar,添加mybat......
  • MapReduce框架原理
    原理一:切片与MapTask并行度决定机制MapTask之前了解到了,他是在分布式程序在map阶段的一个进程,管理之一个map任务类似于一个master。那么什么是切片?说起切片,很明......
  • R语言预测期货波动率的实现:ARCH与HAR-RV与GARCH,ARFIMA模型比较|附代码数据
    全文下载链接:http://tecdat.cn/?p=3832最近我们被客户要求撰写关于期货波动率的研究报告,包括一些图形和统计输出。在本文中,波动率是众多定价和风险模型中的关键参数,例如B......
  • cpu开启节能或者关闭方法及原理
    情况说明CPU支持c-state特性,在负载较低时,会降低CPU频率而实现节能。原理介绍c-state有C0/C1/C2....级别,其中C0为CPU正常运行状态,运行在额定频率,数字越大代表CPU节能模式越深......
  • LVS三种工作模式及原理详解
    什么是LVS?摘自:https://blog.csdn.net/qq_59369367/article/details/124951685LVS是LinuxVirtualServer的简写,也就是Linux虚拟服务器,是一个虚拟的服务器集群系统,......
  • javaweb-filter实现登录拦击功能
    javaweb-filter实现登录拦击功能要求:用户登录了之后才能进入主页,注销的之后就不能进入主页;(在过滤器中实现!)1、用户登录页面实现前端页面代码<%@pagecontentType="text......
  • Linux平台实现简单的IP白名单策略
    /etc/hosts.allow与/etc/hosts.deny的判定机制读取/etc/hosts.allow文件,从上到下读取:如果守护程序-客户端对与文件中的第一行匹配,则授予访问权限;如果该行不匹配,则读取......