天天说架构,那CDN到底是什么?

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 浏览器输入域名后,DNS将域名解析为地址,然后请求该地址,返回一个网页。这个过程就像你买个东西,先查找商店位置,然后找到想要的商品,拿回家。

浏览器输入域名后,DNS将域名解析为地址,然后请求该地址,返回一个网页。

这个过程就像你买个东西,先查找商店位置,然后找到想要的商品,拿回家。

优化-不断地追求

在某宝买个东西,这东西一定要从总部仓库送来吗?

成熟的电商都会在各地建仓库,客户一下单,就近发货,次日达使得用户体验极佳。


所以网站访问可借鉴“就近配送”思想。


可以在各地的数据中心里部署几台机器,形成一个缓存集群,用户访问数据时,就近访问!

这些分布在各个地方的各个数据中心的节点,称为边缘节点。


由于边缘节点数目较多,但每个集群规模较小,不可能缓存下来所有东西,可能无法命中,这样就会在边缘节点之上。

有区域节点,规模就要更大,缓存的数据更多,命中概率更大。区域节点之上是中心节点,规模更大,缓存数据更多。

还不命中,就只好回源网站访问了。

CDN的分发系统的架构:


image.pngimage.png

image.png

CDN系统的缓存,也是一层一层的,能不访问后端真正的源,就不打扰它。

电商网站物流系统的思路:北京局找不到,找华北局,华北局找不到,再找北方局。


那么客户端如何找到相应的边缘节点进行访问?

基于DNS的全局负载均衡,主要用来选择一个就近的同样运营商的服务器进行访问。CDN分发网络也是一个分布在多个区域、多个运营商的分布式系统,也可以用相同的思路选择最合适的边缘节点。


image.png

image.png

无CDN

无CDN时:用户向浏览器输入www.web.com域名后,客户端访问本地DNS服务器时,若本地DNS服务器:

  • 有缓存
    返回网站的地址
  • 没有
    递归查询到网站的权威DNS服务器,这个权威DNS服务器是负责web.com的,它会返回网站的IP地址。本地DNS服务器缓存下IP地址,将IP地址返回,然后客户端直接访问这个IP地址,就访问到了这个网站。

有CDN

就不一样了。在web.com这个权威DNS服务器上,会设置一个CNAME别名,指向另外一个域名 www.web.cdn.com,返回给本地DNS服务器。


当本地DNS服务器拿到这个新域名,需继续解析,再访问的就不是web.com的权威DNS服务器了,而是web.cdn.com的权威DNS服务器。在这个服务器上,还是会设置一个CNAME,指向另外一个域名,也即CDN网络的全局负载均衡器。


接下来,本地DNS服务器去请求CDN的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:

  • 根据用户IP地址,判断哪一台服务器距用户最近
  • 用户所处的运营商
  • 根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需的内容
  • 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力


综合分析后,全局负载均衡器会返回一台缓存服务器的IP地址。


本地DNS服务器缓存这个IP地址,然后将IP返回给客户端,客户端去访问这个边缘节点,下载资源。缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。


CDN可以进行缓存的内容有很多种。


保质期长的日用品比较容易缓存,因为不容易过期,对应到就像电商仓库系统里,就是静态页面、图片等,因为这些东西也不怎么变,所以适合缓存。


  • 接入层缓存的架构

image.png

进入数据中心时,希望通过最外层接入层的缓存,将大部分静态资源的访问拦在边缘。

CDN更进一步,将这些静态资源缓存到离用户更近的数据中心外。越接近客户,访问性能越好,时延越低。

流媒体CDN

CDN支持流媒体协议,例如RTMP协议。相当于一个代理,从上一级缓存读取内容,转发给用户。由于流媒体往往是连续的,因而可以进行预先缓存的策略,也可以预先推送到用户的客户端。


静态页面内容的分发一般采取拉取模式,即当发现未命中,再去上一级拉取。但流媒体数据量大,如果出现回源,压力会比较大,所以往往采取主动推模式,将热点数据主动推送到边缘节点。


流媒体,很多CDN还提供预处理服务,即文件在分发前,经过一定处理,比如:

  • 将视频转换为不同码流,以适应不同网络带宽需求
  • 对视频分片,降低存储压力,也使得客户端可选择不同码率加载不同分片,即超清、标清、流畅等。


防盗链

最简单的方法就是HTTP头的refer字段, 当浏览器发送请求时,带上referer,告诉服务器是从哪个页面链接过来的,服务器基于此可以获得一些信息用于处理。如果refer信息并非来自本站,就阻止访问或跳到其它链接。


但refer方案易被破解,还需配合其它机制,比如时间戳防盗链:

使用CDN的管理员可以在配置界面上,和CDN厂商约定一个加密字符串。

客户端取出当前的时间戳,要访问的资源及其路径,连同加密字符串进行签名算法得到一个字符串,然后生成一个下载链接,带上这个签名字符串和截止时间戳去访问CDN。


在CDN服务端,根据取出过期时间,和当前 CDN 节点时间比较,确认请求是否过期。然后CDN服务端有了资源及路径,时间戳,以及约定的加密字符串,根据相同的签名算法计算签名,如果匹配则一致,访问合法,才会将资源返回给客户。


在电商仓库中,有关生鲜的缓存就非常麻烦,这对应动态数据,较难缓存。现在的动态CDN,主要有两种模式:

生鲜超市模式

边缘计算模式。既然数据是动态生成,所以数据的逻辑计算和存储,也相应放在边缘的节点。

定时从源数据那里同步存储的数据,然后在边缘进行计算得到结果。

就像对生鲜的烹饪是动态的,没办法事先做好缓存,因而将生鲜超市放在你家旁边,既能够送货上门,也能够现场烹饪,也是边缘计算的一种体现。

冷链运输模式

路径优化模式。数据不是在边缘计算生成,而是在源站生成,但是数据的下发可以通过CDN网络,对路径进行优化。因为CDN节点较多,能够找到离源站很近的边缘节点,也能找到离用户很近的边缘节点。中间的链路完全由CDN来规划,选择一个更加可靠的路径,使用类似专线的方式进行访问。


TCP连接在公网上传输的时候经常会丢数据,导致TCP的窗口始终很小,发送速度上不去。

在CDN加速网络中可调整TCP参数:

  • 通过多个请求复用一个连接,保证每次动态请求到达时。连接都已建立,不必临时三次握手或建立过多连接
  • 对传输数据进行压缩,增加传输效率


就像冷链运输,整个物流优化了,全程冷冻高速运输。不管生鲜是从你旁边的超市送到你家的,还是从产地送的,保证到你家是新鲜的。

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
1天前
|
缓存 负载均衡 网络协议
高并发架构的CDN知识介绍
本文详细介绍了网络请求过程,特别是大型网站架构中DNS和CDN的作用。通过一张常用架构图,文章解释了从客户端请求到服务器响应的全过程,包括DNS解析、负载均衡、CDN加速等关键环节,帮助读者深入了解高并发架构的设计原理和优化方法。
12 1
|
18天前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
5月前
|
存储 负载均衡 应用服务中间件
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
|
调度 CDN
CDN技术架构
CDN技术架构
|
域名解析 机器学习/深度学习 缓存
秒懂边缘云 | CDN基础入门:CDN原理及架构
本文将为您介绍「CDN 是什么」以及「CDN 在用户体验的提升中发挥了什么样的作用」。
5621 1
|
存储 缓存 编解码
阿里云 CDN 服务架构及应用场景|学习笔记
快速学习阿里云 CDN 服务架构及应用场景
阿里云 CDN 服务架构及应用场景|学习笔记
|
缓存 边缘计算 网络协议
CDN 架构及配置|学习笔记
快速学习 CDN 架构及配置
CDN 架构及配置|学习笔记
|
缓存 边缘计算 网络协议
CDN 架构及配置|学习笔记
快速学习 CDN 架构及配置
584 0
CDN 架构及配置|学习笔记
|
存储 缓存 负载均衡
分布式架构原理--CDN加速静态文件访问
分布式架构原理专题: (演进过程及如何把应用从单机扩展的分布式;CDN加速静态文件访问;系统监控、容灾、存储动态扩容;架构设计及业务驱动分化;CAP\Base理论及其应用)
545 0
分布式架构原理--CDN加速静态文件访问
|
22天前
|
云安全 网络安全 CDN
阿里云CDN遇到攻击?别慌,教你如何应对!
阿里云CDN遇到攻击?别慌,教你如何应对!
下一篇
无影云桌面