后台系统可扩展性学习笔记(四)CDN机制原理

文章目录

  • 概念梳理
  • CDN拓扑结构
  • CDN内容分发方式
  • 架构原理
    • 工作原理
    • 实现原理

概念梳理

CDN(Content Delivery Network,内容分发网络)是由分布在不同地理位置的代理服务器及其数据中心组成的网络,希望在空间距离上为用户就近提供服务,以提高可用性和性能。(空间距离体现在网络传输上就是跳数(hop),从客户端到服务器所经过的跳数越多,距离越远,一般延迟也越大)
CDN 一般用来托管 Web 资源(包括文本、图像和脚本),可供下载的资源(媒体文件、软件、文档等),应用程序(电子商务、门户网站等),以及流媒体和社交媒体网站,加速这些资源的访问,例如在使用Bootstrap-table创建表单,并且与flask后台进行数据交互中浅尝了一下Bootstrap-table组件,但是并未下载其资源而是直接通过cdn直接获取。
性能方面,引入 CDN 的作用在于:

  • 用户收到的内容来自最近的数据中心,延迟更低,内容加载更快
  • 部分资源请求被外包给了 CDN,减少了服务器负载
    使用CDN的优势
    1、一方面缩短了内容与最终用户之间的距离,另一方面,内容不直接从服务器获取,节省了服务器的计算资源,分担了源站压力。
    2、安全性上,CDN 有助于防御 DDoS、MITM 等网络攻击:
  • DDoS(Distributed Denial of Service):通过监控分析异常流量,限制其请求频率
  • MITM(Man-In-The-Middle):从源服务器到 CDN 节点到 ISP(Internet Service Provider),全链路 HTTPS 通信

3、作为一种基础的云服务(IaaS),CDN 同样具有资源托管、按需扩展(能够应对流量高峰)等方面的优势,这降低了内容提供商的基础设施需求,让他们能够更快、更轻松地部署或扩展服务。

CDN拓扑结构

拓扑结构上,CDN 分为分散式(Scattered CDN)和整合式(Consolidated CDN)两种。
在世界各地部署尽可能多的服务器,称为分散式 CDN。早期的 CDN 用大量的中低性能服务器密集地填满选定的地理区域,这些小节点易于部署,尤其适用于低连接性(low-connectivity)的区域。
随着全球连接性的不断提高,缩减物理距离的收益逐渐减少,大量节点的维护成本也凸现出来,于是出现了整合式 CDN。
整合式 CDN 只在主要的数据中心有少量节点,但节点性能更强大,包括网络、吞吐量以及抗 DDoS 的能力,这种集中式的结构有助于提升整体响应能力,为用户和网络运营商提供更多的控制,但部署相对复杂,而且在低连接性区域效果较差。

图1 分散式
图2 整合式

CDN内容分发方式

CDN 按内容分发方式分为 Push CDNPull CDN
前者由内容服务器提前把内容“推”到 CDN 缓存起来,后者在用户访问内容时 CDN 才去“拉”目标资源并缓存起来。
Push CDN
每次内容发生变化时,都把新内容上传到 Push CDN。由于只需要上传新增的内容和发生变化的内容,用于传输的流量相对较少,但要存储的内容相对较多
因此,Push CDN 适用于小流量,或内容更新不频繁的站点,内容一次性放到 CDN,无需周期性地重新拉取。如果流量负担本就很重,或者内容改动频繁,Push CDN 会给服务器带来额外的压力。
Pull CDN
Pull CDN 无需手动上传,在用户首次访问时自动从服务器拉取新内容,并缓存起来。按需缓存节省了 CDN 存储空间,但在文件过期或在未发生变化时重新拉取也会造成不必要的流量开销

因此,Pull CDN 适用于大流量站点,只缓存最近使用(最受欢迎)的内容,一旦配置好就能按需缓存内容,维护成本较低。
关于CDN缓存的策略,请看之前的笔记:DN缓存替代算法

架构原理

在这里插入图片描述

  • 源服务器(Origin server):提供内容(数据)源的服务器
  • 边缘服务器(Edge server):用来缓存来自源服务器的内容的服务器
  • 入网点(Point of Presence,PoP):边缘服务器所在的物理位置,一个入网点可能存在多个边缘服务器
  • CDN 反向代理(CDN Reverse Proxy):将用户请求转发到源服务器,并缓存来自源服务器的响应,用于 Pull CDN
  • 回源(Back-to-source):CDN 节点未缓存请求资源或缓存资源已到期时,回源站获取资源,返回给客户端

工作原理

以 Pull CDN 为例,特定地区的用户首次访问资源时,从源服务器取,内容响应给用户之后,资源会被缓存在该地区的边缘服务器上,如果同一地区的用户再次请求相同资源,则从边缘服务器响应:
在这里插入图片描述
可以通过响应头的特定字段来区分内容响应来自源服务器还是 CDN 缓存,例如:

  • X-Cache: HIT:命中缓存,响应内容来自 CDN 缓存
  • X-Cache: MISS:未命中缓存,响应内容来自源服务器

实现原理

实现上,将子域名的解析权通过CNAME 记录交给 CDN,接着通过基于地理位置临近程度的路由策略,将请求映射到距用户最近的边缘服务器。
对于 Push CDN,边缘服务器仅提供缓存服务,未命中缓存就返回 404,而对于 Pull CDN,边缘服务器提供反向代理服务,未命中缓存时回源去取。

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

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

相关文章

Javascript 基础—变量 运算符

经过找工作笔试的洗礼,感觉自己js语法方面掌握的不是很系统,今天来梳理下——变量以及运算符。 基础篇 和C语言的不同点:是一种弱类型语言,申明变量时不需要指定类型;变量名的命名方法也有不同;简单类型种类…

后台系统可扩展性学习笔记(五)负载均衡

文章目录Load balancer(负载均衡器)请求传输拆解DNS 负载均衡客户端负载均衡OSI 七层模型回顾2 层、3 层负载均衡3/4 层负载均衡7 层负载均衡在 第一节谈到了系统的横向扩展在于从单机扩展到多机,那么面临的第一个问题就是这些机器如何协同工作,即如何调…

Struts2第一个工程helloStruts极其基本配置

前面已经准备好了Struts-2.3.15,现在就可以直接搭建Struts2的工程了。前面http://blog.csdn.net/huangchnegdada/article/details/9179041有对Struts-2.3.15的准备工作的详述。 首先打开MyEclispe新建一个Web Project,名字就叫Struts2_0100_Introduction…

[LeetCode]Find Minimum in Rotated Sorted Array

题目描述: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum element. You may assume no duplicate exists in the array. 解题方案: 直接贴代码&…

后台系统可扩展性学习笔记(六)反向代理

文章目录Web代理服务反向代理反向代理作用Web代理服务 Web 代理服务指的是在客户端资源请求和提供这些资源的 Web 服务之间充当中介的角色,代理服务可以实现在客户端,或者从客户端到目标服务器中间的任意环节。 例如,客户端不直接向提供目标…

(C)单链表

老师版 1 #include <stdio.h>2 #include <stdlib.h>3 4 // 定于Node数据类型5 struct Node6 {7 int data; // 数据域8 struct Node *next; // 指针域9 };10 11 // 创建一个单链表&#xff0c;并把head节点返回&#xff1b;…

实验:sigsuspend(),sigprocmask()

实验&#xff1a;sigsuspend(),sigprocmask()源代码&#xff1a;/* * Program: pause_suspend.c * To test the difference between sigsuspend() and paus(). * Author: zsl * Date: 2014-10-17 * First release. * 参见网页&#xff1a;http://blog.csdn.net/liwentao1091/ar…

后台系统可扩展性学习笔记(七)Service Discovery与微服务

文章目录应用层微服务架构服务注册查询 Service Discovery客户端 Service DiscoveryDNS-SD DNS-based Service Discovery服务端 Service Discovery服务注册与注销自注册模式第三方注册模式总结参考应用层 在简单的 3 层结构中&#xff0c;Web 服务层既要处理请求&#xff0c;又…

很久没写代码了,这(那)几天真是累死了。。。先写一个幻方的程序吧

1 #include <stdio.h>2 #include <stdlib.h>3 #include <windows.h>4 5 #define EVEN_DOUBLE_4 4 //双偶的最基本类型&#xff0c;4阶双偶6 #define SCREEN_SIZE 19 //屏幕显示不变形的最大尺寸&#xff08;主要是因为窗口大小限制&#xff09;7 #defi…

#pragma once

http://baike.baidu.com/view/1276747.htm?fraladdin 转载于:https://www.cnblogs.com/prayer521/p/4069040.html

后台系统可扩展性学习笔记(八)Service Mesh

文章目录网络传输可靠性将微服务控制下沉到网络栈&#xff1f;Sidecar从 Sidecar 到 Service MeshService Mesh 部署平台参考网络传输可靠性 从计网的学习过程中我们可以知道数据在网络传输中可能会出现一些异常状况&#xff1a; 数据丢失&#xff1a;数据包可能会到达一个缓…

关于Spring batch的学习之CSV2DB

最近在学习Spring batch相关的内容&#xff0c;网上也有不少Spring Batch相关的知识&#xff0c;不过大多都是使用xml进行配置的。这里是我用注解的方式进行相关的学习心得。 首先我们来看如何将一个文本文件中的内容导入到数据库中。 我们先来看一下我们所需要的环境。我们这里…

后台系统可扩展性学习笔记(九)Database Replication

文章目录数据库扩展一致性问题Replication &#xff08;复制&#xff09;异步复制同步复制半同步复制拓扑结构单主结构多主结构无主结构复制具体措施参考数据库扩展 之前在第一章后台系统可扩展性学习笔记&#xff08;一&#xff09;概要谈到&#xff1a;理论上&#xff0c;有…

python中的sum函数.sum(axis=1)

看起来挺简单的样子&#xff0c;但是在给sum函数中加入参数。sum&#xff08;a&#xff0c;axis0&#xff09;或者是.sum(axis1) 就有点不解了 在我实验以后发现 我们平时用的sum应该是默认的axis0 就是普通的相加 而当加入axis1以后就是将一个矩阵的每一行向量相加 例如&…

后台系统可扩展性学习笔记(十)Database Partitioning

为了提升数据库的处理能力&#xff0c;我们把单库扩展成多库&#xff0c;并通过更新同步机制&#xff08;即Replication&#xff09;来保证多份数据的一致性。然而&#xff0c;在 各种复制方案下&#xff0c;每个数据库都持有一份完整数据&#xff0c;基于全量数据提供增删改查…

基于FPGA的HDTV视频图像灰度直方图统计算法设计

随着HDTV的普及&#xff0c;以LCD-TV为主的高清数字电视逐渐进入蓬勃发展时期。与传统CRT电视不同的是&#xff0c;这些高清数字电视需要较复杂的视频处理电路来驱动&#xff0c;比如&#xff1a;模数转换&#xff08;A/D Converter&#xff09;、去隔行&#xff08;De-interla…

后台系统可扩展性学习笔记(十一)Database Denormalization

之前的两篇笔记中谈到了从单库扩展到多库以承载更多的请求量以及单库&#xff08;表&#xff09;拆分成多库&#xff08;表&#xff09;&#xff0c;打破单库的性能瓶颈。 这都是为了应对大数据量下的措施。 然而&#xff0c;除却数据量外&#xff0c;还有一个极其影响单库性能…

Java Swing 影楼管理系统之登录功能

开头打广告&#xff0c;Java1234.com。 首先&#xff0c;来个效果图。 关键代码 1&#xff0c;界面层 private void Jb_DengLuActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:String UserName this.Jb_UserNameTxt.getText();String …

Bdsyn百度手机助手是何物,它是怎样神不知鬼不觉地安装到你的电脑里的?

【电脑软件管理中Bdsyn手机助手的问题】Bdsyn手机助手 is developed by Baidu, Inc. and is used by 10 users of Software Informer. 并不是本人安装的&#xff08;应该是自己自己主动安装的&#xff09;&#xff0c;卸载以后过几天又会出如今软件列表里。百度搜索却无法搜索出…

后台系统可扩展性学习笔记(十二)NoSQL

文章目录NoSQL定义NoSQL种类键值存储文档存储宽列存储图形数据库NoSQL 意味着什么ACID vs. BASESQL or NoSQLNoSQL定义 不同于关系型数据库&#xff0c;NoSQL 数据库&#xff08;也叫非 SQL 或非关系型数据库&#xff09;提供的数据存储、检索机制并不是基于表关系建模的。没有…