18 CDN详解

1、理解CDN
1.CDN 和电商系统的分布式仓储系统一样,就近发货给客户(客户端),所以,必然是提前在仓库中存储了某些商品.
2.CDN最擅长的是缓存静态数据,比如电商系统的热点静态页面,秒杀场景的页面等.

问题:向生鲜这种东西,如果提前存储在了仓库中,没有人够吗咋整?

2、实现的过程
1.全球有这么多的数据中心,无论在哪里上网,临近不远的地方基本上都有数据中心。可以在这些数据中心里部署几台机器,形成一个缓存的集群来缓存部分数据,那么用户访问数据的时候,就可以就近访问了。
2.边缘节点:这些分布在各个地方的各个数据中心的节点,就称为边缘节点。
3.区域节点:边缘节点数目比较多,但是每个集群规模比较小,不可能缓存下来所有东西,因而可能无法命中,所以在边缘节点之上。设置了区域节点,区域节点规模更大,缓存的数据更多,命中的概率也会更大。
4.中心节点:在区域节点之上,规模更大,缓存数据更多。如果还不命中,就只好回源网站访问了。
3、CDN分发系统架构

在这里插入图片描述

1.CDN 系统的缓存,是一层一层的,能不访问后端真正的源,就不访问。这也是电商网站物流系统的思路
4、客户端如何找到相应的边缘节点?
1.CDN 分发网络也是一个分布在多个区域、多个运营商的分布式系统,用DNS域名解析的相同的思路来选择最合适的边缘节点。

在这里插入图片描述

1. 在没有CDN的情况下,权威DNS服务器解析后,会直接返回ip地址。
2. 有了CDN之后,你访问www.baidu.com的时候,在 .com 这个权威 DNS 服务器上,会设置一个 CNAME 别名,指向另外一个域名 www.baidu.cdn.com,返回给本地 DNS 服务器.
3. 当本地 DNS 服务器拿到这个新的域名时,需要继续解析这个新的域名,再访问的时候就是xx.cdn.com 的权威 DNS 服务器了,这是 CDN 自己的权威DNS 服务器。
4. 在这个服务器上,还是会设置一个 CNAME,指向另外一个域名,也即 CDN 网络的全局负载均衡器。
5. 本地 DNS 服务器去请求 CDN 的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务。选择的依据:根据用户 IP 地址,判断哪一台服务器距用户最近;用户所处的运营商根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需的内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件,进行综合分析之后,全局负载均衡器会返回一台缓存服务器的 IP 地址。
6. 本地 DNS 服务器缓存这个 IP 地址,然后将 IP 返回给客户端,客户端去访问这个边缘节点,下载资源。//缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地.

CDN 可以缓存的内容

像电商系统的仓储点,适合存储一些不易过期的日用品如纸,家具家电等,而不适合缓存一些生鲜类的产品,对应的就是一些静态页面,图片等。
在这里插入图片描述
从上图的接入层的缓存架构Varnish来看,我们将大部分静态资源的访问拦截在边缘,而CDN则是更厉害了,直接缓存在了离用户更新的地方.这样访问性能更好,时延越低。

特殊的CDN缓存:流媒体

  1. 流媒体往往是连续的,因而可以进行预先缓存的策略,是采取主动推送的方式,因为流媒体数据量大,如果出现回源,压力会比较大。所以,将热点数据主动推送到边缘节点
  2. 对于流媒体来讲,很多 CDN 还提供预处理服务,也即文件在分发之前,经过一定的处理。
    例如
    将视频转换为不同的码流,以适应不同的网络带宽的用户需求;就是我们常见的,超清、标清、流畅

防盗链问题
因为视频是要花大价钱买版权的,为了挣点钱,收点广告费,如果流媒体被其他的网站盗走,在人家的网站播放,那损失可就大了。
解决方案:HTTP 头的 refer 字段, 当浏览器发送请求的时候,一般会带上 referer,告诉服务器是从哪个页面链接过来的,服务器基于此可以获得一些信息用于处理。如果 refer 信息不是来自本站,就阻止访问或者跳到其它链接。
refer 的机制相对比较容易破解,所以还需要配合其他的机制

时间戳防盗链

  1. CDN 的管理员可以在配置界面上,和 CDN 厂商约定一个加密字
    符串。
  2. 客户端取出当前的时间戳,要访问的资源及其路径,连同加密字符串进行签名算法得到一个字符串,然后生成一个下载链接,带上这个签名字符串和截止时间戳去访问 CDN。
  3. CDN 服务端,根据取出过期时间,和当前 CDN 节点时间进行比较,确认请求是否过期。然后 CDN服务端有了资源及路径,时间戳,以及约定的加密字符串,根据相同的签名算法计算签名,如果匹配则一致,访问合法,才会将资源返回给客户。
5、动态 CDN

回到之前的仓库中无法缓存生鲜产品的问题,对应的就是动态数据
两种常用模式
(1)边缘计算模式:将动态数据的逻辑计算和存储,放在相应的边缘节点,定时从源数据同步存储数据,然后在边缘节点进行计算。
(2)路径优化模式:数据不是在边缘计算生成的,而是在源站生成的,但
是数据的下发则可以通过 CDN 的网络,对路径进行优化。因为 CDN 节点较多,能够找到离源站很近的边缘节点,也能找到离用户很近的边缘节点。中间的链路完全由 CDN 来规划,选择一个更加可靠的路径,使用类似专线的方式进行访问。

tcp优化

  1. 问题:常用的 TCP 连接,在公网上传输的时候经常会丢数据,导致 TCP 的窗口始终很小,发送速度上不去。
  2. 根据前面的 TCP 流量控制和拥塞控制的原理,在 CDN 加速网络中可以调整 TCP 的参数,使得TCP 可以更加激进地传输数据。
  3. 通过多个请求复用一个连接,保证每次动态请求到达时。连接都已经建立了,不必临时三次握手或者建立过多的连接,增加服务器的压力。另外,可以通过对传输数据进行压缩,增加传输效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快手快速涨粉的方法,自动涨粉软件的开发分享与实操分享

先来看视频实操成果,↑↑需要的同学可看我名字↖↖↖↖↖,或评论888无偿分享 一、引言 随着互联网的飞速发展,快手已经成为了许多人分享生活、展示才艺的平台。在快手上,如果你想要快速涨粉,就需要掌握一些技巧和方法…

计算机网络实验

计算机网络实验 使用软件PT7.0按照上面的拓扑结构建立网络,进行合理配置,使得所有计算机之间能够互相通信。并且修改各交换机的系统名称为:学号_编号,如你的学号为123,交换机Switch0的编号为0,则系统名称为…

前端Vue 页面滑动监听 拿到滑动的坐标值

前言 前端Vue 页面滑动监听 拿到滑动的坐标值 实现 Vue2写法 mounted() {// 监听页面滚动事件window.addEventListener("scroll", this.scrolling);}, methods: { scrolling() {// 滚动条距文档顶部的距离let scrollTop window.pageYOffset ||document.documentE…

如何使用Node.js快速创建HTTP服务器并实现公网访问本地Server

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

Redis系列-Redis数据类型【3】

目录 Redis系列-Redis数据类型【3】字符串类型(String)SDS (simple dynamic string) 哈希类型(Hash)列表类型(List)集合类型(Set)有序集合类型(ZSet)字符串类…

【JavaEE】HTTP协议(什么是HTTP?、HTTP格式、form表单和ajax构造HTTP)

一、什么是HTTP协议? 1.1 HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议 1.2 理解HTTP协议的工作过程 当我们在浏览器中输入一个 “网址”, 此时浏览器就会给对应的服务器发送一个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就…

es6过滤对象里面指定的不要的值filter过滤

//过滤出需要的值this.dataItemTypeSelectOption response.data.filter(ele > ele.dictValue tree||ele.dictValue float4);//过滤不需要的值this.dataItemTypeSelectOption response.data.filter((item) > {return item.dictValue ! "float4"&&it…

基于站点、模式、遥感多源降水数据融合实践技术应用

降水在水循环中发挥着重要作用,塑造了生态景观和生态系统。目前,有四种主要方式获取降水数据:1)雨量计观测,2)地基雷达遥感,3)卫星遥感,4)模式模拟。基于雨量…

K8s----资源管理

目录 一、Secret 1、创建 Secret 1.1 用kubectl create secret命令创建Secret 1.2 内容用 base64 编码,创建Secret 2、使用方式 2.1 将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下 2.2 将 Secret 导出到环境变量中 二、Co…

LeetCode_多源 BFS_中等_2258.逃离火灾

目录 1.题目2.思路3.代码实现(Java) 1.题目 给你一个下标从 0 开始大小为 m x n 的二维整数数组 grid ,它表示一个网格图。每个格子为下面 3 个值之一: 0 表示草地。1 表示着火的格子。2 表示一座墙,你跟火都不能通过…

你别说,还真好用,Apipost-IDEA插件

写完代码还得重复打字编写接口文档?代码量大定位接口定义方法太难找?麻烦!写完代码还得复制粘贴到postman进行调试? 这三点太麻烦?今天给大家推荐一款IDEA插件,写完代码IDEA内一键生成API文档,…

工业物联网模块应用之砂芯库桁架机器人远程无线控制

一、应用背景 在铸管车间无线技改项目中,客户需要构建智能化砂芯库,要求各库存的规格、数量、位置坐标等数据实时可显。此外,还需具备自动入库及出库功能,用于将出炉后的成摞砂芯及时码放至砂芯库的预设位置,当离心机…

深度学习(CNN+RNN)笔记2

文章目录 第五课:序列模型(Sequence Models)第一周:循环神经网络(Recurrent Neural Networks)【序列模型、语言模型序列生成、对新序列采样。RNN、GRU、LSTM、双向RNN、深度RNN】第二周:自然语言处理与词嵌入&#xff…

管理视频推广工作:新媒体团队的成功策略

目前的新媒体团队,在视频管理时呈现出多、杂、散的特点,如何有效管理视频素材是当下许多新媒体团队的管理痛点,也是管理要点。高效的视频推广管理是新媒体团队提升产出效率的关键。 那么新媒体行业该如何管理视频推广工作? 数据…

Spring-循环依赖简述

什么是循环依赖 // A依赖了B class A {public B b; } ​ // B依赖了A class B {public A a; } ​ // 循环依赖 A a new A(); B b new B(); a.b b; b.a a; 对象之间的相互依赖很正常,但是在Spring中由于对象创建要经过Bean的生命周期,所以就有了循环…

浅谈智能变电站自动化系统的应用与产品选型

安科瑞电气股份有限公司 上海嘉定 201801 摘要:现如今,智能变电站发展已经成为了电力系统发展过程中的内容,如何提高智能变电站的运行效率也成为电力系统发展的一个重要目标,为了能够更好地促进电力系统安全稳定运行,…

【Head First 设计模式】-- 策略模式

一、背景 Head First 设计模式第一章设计模式入门–策略模式 二、工具箱的工具(本章) 1、OO基础 封装 继承 多态 抽象 2、OO原则 封装变化 面向接口编程,而非面向实现编程 组合优于继承 3、OO模式 策略模式,所谓策略模式就是定义…

使用 Wireshark 抓包工具快速分析 IoT 物联网终端设备的网络通信行为

当你进行 IoT 物联网开发过程中,终端-MQTT 服务器-业务系统-App 全链路联调时往往难以快速定位问题:终端可能未正常发出消息报文,也可能在网络传输中丢失,也可能被 MQTT 服务器限流丢弃,或者业务系统处理异常而丢失。此…

QT第2课-GUI程序实例分析

GUI程序开发概述 不同的操作系统GUI开发原理相同不同的操作系统GUI SDK 不同 GUI 程序开发原理 GUI程序在运行时会创建一个消息队列系统内核将用户的键盘鼠标操作翻译成对应的程序消息程序在运行过程中需要实时处理队列中的消息当队列中没有消息时,程序将处于停滞…

基于 HarmonyOS 的 HTTPS 请求过程开发示例(ArkTS)

介绍 本篇 Codelab 基于网络模块以及 Webview 实现一次 HTTPS 请求,并对其过程进行抓包分析。效果如图所示: 相关概念 ● Webview:提供 Web 控制能力,Web 组件提供网页显示能力。 ● HTTP数据请求:网络管理模块&am…