首页 > 其他分享 >CDN(内容分法网络)工作原理

CDN(内容分法网络)工作原理

时间:2022-10-14 11:57:28浏览次数:42  
标签:负载 缓存 CDN 网络 用户 访问 原理 节点

转载链接:

  https://vue3js.cn/interview/http/CDN.html#%E4%B8%80%E3%80%81%E6%98%AF%E4%BB%80%E4%B9%88

一、是什么

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的心脏,缓存命中直接返回给用户,否则回源

标签:负载,缓存,CDN,网络,用户,访问,原理,节点
From: https://www.cnblogs.com/nick-qiu/p/16791159.html

相关文章

  • 网络安全中三保一评分别是什么?有什么作用?
    初入行学网络安全的时候,大家肯定听说过或了解过“三保一评”,那么你知道网络安全中“三保一评”是什么吗?所谓三保一评指的就是分保、等保、关保以及密评,接下来通过这篇......
  • 05.使用寄存器电亮LED原理(2)
             ......
  • Python爬虫之scrapy_redis原理分析并实现断点续爬以及分布式爬虫
    scrapy_redis原理分析并实现断点续爬以及分布式爬虫学习目标了解scrapy实现去重的原理了解scrapy中请求入队的条件掌握scrapy_redis基于url地址的增量式单机爬虫掌握scr......
  • 看一遍就理解:MVCC原理详解
    前言MVCC实现原理是一道非常高频的面试题,最近技术讨论群的小伙伴一直在讨论,趁着国庆节有空,我们一起来聊聊。1.相关数据库知识点回顾1.1什么是数据库事务,为什么要有事务......
  • Android root 原理
    0x00关于rootlinux和类Unix系统的最初设计都是针对多用户的操作系统,对于用户权限的管理很非常严格的,而root用户(超级用户)就是整个系统的唯一管理员,拥有等同于操作系统的所有......
  • Flink的异步算子的原理及使用
    1、简介Flink的特点是高吞吐低延迟。但是Flink中的某环节的数据处理逻辑需要和外部系统交互,调用耗时不可控会显著降低集群性能。这时候就可能需要使用异步算子让耗时操作......
  • 盘点一个Python网络爬虫+正则表达式处理案例
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【鑫】问了一个Python网络爬虫的问题,提问截图如下:下面是他的代码:importrequestsimportreurl="https......
  • Vue1的响应式原理笔记
    参考:https://www.bilibili.com/video/BV1G54y1s7xVhttps://juejin.cn/post/6932659815424458760递归向下创建obObject.defineProperty方法,可以自定义get和set一个对象......
  • 计算机网络(learning Records)
    背景:没想到本专业并不开设这门课程,感觉过于逆天,之前开发的时候了解过相关知识但是从来没有系统地学过,就自己看了书,总结一下参考:《TCP/IP详解卷1:协议》概述大多数网......
  • 计算机网络学习笔记
    计算机网络的概念相互分享资源的互联起来的自治计算机(computers)的集合自治(autonomous):非主从关系,对等的行为模式互联(interconnected):通信计算机(computers):数字化(数据,信......