CDN技术

CDN

假设你做了一个系统,要存放用户的一些信息,一般会把这些数据存放到MySQL当中,假设系统中有一些商品信息也是存放在MySQL中,慢慢的你的系统一天系统用户原来越多,查看商品的用户越来越多导致系统的响应速度越来越慢,于是你就将一些用户经常访问的商品信息存放到Redis中,来提高系统的响应速度。当我们要存储一张图片的时候,就不会将图片存储到MySQL中,同理也不会将图片缓存到Redis中,一般图片会存放到一些服务厂商的对象存储中,而如果要缓存的图片,那么此时CDN就登场了。对象存储及好比MySQL,CDN就好比Redis。

在这里插入图片描述

CDN(全称 Content Delivery Network),即内容分发网络。简单来说就是通过依靠分布在各地的CDN服务器,通过负载均衡、内容分发、调度等功能模块让用户从与其最近的CDN服务器获取数据,从而降低网络传输的开销,提高访问速度。

举个例子:你在某东官方下单了一件商品,某东就会在理你收货地址最近的仓库将货物发出,而这些仓库在分布在全国各个地点,从而提高快递到用户手上的速度。

假设我在湖南要访问www.baidu.com百度网页,而百度的服务器在北京,其实是由这么一个流程:

  1. 先去查询浏览器的缓存看看没有有这个域名对应的ip地址
  2. 如果浏览器缓存没有查到就会去查找本地的host文件,看看本地的Host文件有没有这么该域名对应的Ip地址
  3. 如果还是没有就会走DNS解析流程,首先本地DNS就会去问DNS服务器的根服务器,根服务器就会告诉你负责.com域名的顶级域名服务器
  4. 接着就会去找负责.com顶级域名服务器,问顶级域名服务器,它说你去找baidu.com的权威域名服务器
  5. 最后你去找到权威域名服务器问www.baidu.com域名对应的ip,本地DNS拿到域名对应的Ip后就会将ip返回给客户端。
  6. 拿到www.baidu.com域名对应的Ip后,就会去请求该Ip对应的服务器。

在这里插入图片描述

我从湖南请求北京的服务器,要跨域大半个中国,期间涉及到大量的网络传输细节,网络传输其实是一件非常复杂的事情,很可能出现丢包等一些以外情况,导致用户访问时间长甚至白屏现象

那么测试就可以用到CDN服务器,将一些静态资源存储到CDN服务器上,这些CDN服务器会有一群专门的人或者说厂商来维护,会分布在世界各地。同理假设百度在每个省份都设有CDN服务器,当我从湖南访问www.baidu.com的时候,就是直接从就近的湖南CDN服务器来获取数据了,并不需要再去请求北京服务器来获取数据了,从而减少了网络传输的开销,简单理解CDN其实就是一个缓存服务器,CDN一般用来缓存一些静态数据,比如说图片、视频或者说一些软件安装包之类的。

假设你使用对象存储存放图片数据,使用CDN做缓存。那么访问图片的时候就是这么一个流程,假设范围的是www.test.com/demo.jpg图片

  1. 首先去浏览器访问的时候会通过DNS解析流程拿到该域名对应的别名,DNS消息有很多种类型,其中A类型,就是用域名去查域名对应的IP地址。而CNAME类型,则是用域名去查这个域名的别名
  2. 通过www.test.com查询到该域名对应的别名,也就是CDN服务器的域名。
  3. CNAME里指向的,其实是CDN专用的DNS域名服务器,再通过CND的域名服务器解析出对应的ip地址
  4. 拿到Ip地址后就会去访问对应的CDN服务器来获取数据

在这里插入图片描述

为啥需要CNAME别名?

  • 其实CNAME对应的别名其实就用例解析出距离用户**“最近”**的CDN服务器
  • 因为CDN厂商可定知道每台CDN服务的距离用户的距离以及每台服务器的负载,根据距离和负载挑选出最适合用户的服务器Ip返回给用户,让用户进行请求

回源是什么?

我们知道当我们访问一个数据在Redis中没有的时候,就会去访问MySQL数据库。CDN也是同理,如果用户访问的资源在CDN服务器中不存在,那么此时CND就会去真正的源服务器中获取数据,把数据缓存到CDN服务器上,下次用户访问的时候,就会从CDN中获取数据。

恶意攻击?

根据前面所说可以指定,在引入CDN后用户访问的其实并不是真正的源服务器而是CDN服务器,那么假设有恶意请求打到CDN服务器上的时候,CDN能承受的住吗?其实CDN的服务厂商肯定会考虑这个问题,一般采用负载均衡和任播技术来解决。就是多个CDN服务器对外都暴露的是同一个Ip地址,CND域名解析的时候就会采用任播技术根据一个服务器的负载来决定是否将用户请求分配一个距离用户最近的服务器,就可以通过负载均衡来将用户的请求流量分发给不同服务器。

在这里插入图片描述

费用问题?

既然CDN需要收费,那么使用CDN会不会让成本更高呢?如果不使用CDN服务,请求源服务器距离可能非常远在网络传输的时候可能会出现一些问题,最关键的是需要更到的网络带宽费用,而CDN采用的是**“最近”**原则,可以近一步降低网络传输成本。少走一段路,肯定比多走一段路开销是更小的。

小结

但我们需要将图片、视频或者说软件安装程序进行让全国甚至世界各地用户多次访问的时候,就可以介入CDN提高用户访问速度。但如果图片和服务都处于内网,并且这些文件并不会重复访问就不需要用到CDN服务了。


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

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

相关文章

Real User ID 和 Effective User ID 的区别

在 Unix 和 Linux 系统中,每个进程都有多个用户标识符(UID),其中最重要的是“真实用户 ID”(real UID)和“有效用户 ID”(effective UID)。 它们的区别和用途如下: 真实…

linux nethogs网络监控程序(端口监控、流量监控、上传流量、下载流量、进程监控进程网络)

文章目录 Nethogs 网络监控程序详解1. 引言2. Nethogs 的安装与运行2.1 安装 Nethogs- **Debian/Ubuntu**- **Fedora**- **Arch Linux** 2.2 运行 Nethogs 3. Nethogs 的使用详解3.1 基本界面- **PID**:进程的 ID。- **用户**:运行该进程的用户。- **程序…

注意力机制篇 | YOLOv8改进之在C2f模块引入Global Context注意力模块 | 全局上下文注意力机制

前言:Hello大家好,我是小哥谈。GCNet(Global Context Network)是由XV Jiарui开发的一个开源项目,它旨在通过全局上下文信息增强网络的注意力机制,以改善模型对图像的理解和处理能力。它的核心思想是在每个残差块之后添加一个全局上下文模块(即本文的Global Context注意…

【Quart 框架——来源于Flask的强大且灵活的异步Web框架】

目录 前言一、Quart简介1-1、简介1-2、与flask的区别 二、快速开始2-1、安装2-2、基本用法 三、核心功能3-1、异步路由3-2、WebSockets 支持3-3、中间件3-4、蓝图 (Blueprints) 四、部署4-1、使用uvicorn部署4-2、使用hypercorn部署 五、案例分析总结 前言 Quart 是一个基于 Py…

【Python】爬虫实战01:获取豆瓣Top250电影信息

本文中我们将通过一个小练习的方式利用urllib和bs4来实操获取豆瓣 Top250 的电影信息,但在实际动手之前,我们需要先了解一些关于Http 请求和响应以及请求头作用的一些知识。 1. Http 请求与响应 HTTP(超文本传输协议)是互联网上…

虚函数__

10 文章目录 虚函数虚函数表override(不允许后续函数继承)虚析构纯虚函数 虚函数 虚函数表 override(不允许后续函数继承) 虚析构 纯虚函数

从零开始学习PX4源码3(如何上传官网源码到自己的仓库中)

目录 文章目录 目录摘要1.将PX4源码上传至腾讯工蜂2.从腾讯工蜂克隆源码到本地ubuntu3.如何查看自己源码的版本信息 摘要 本节主要记录从零开始学习PX4源码3(如何上传官网源码到自己的仓库中)及如何查看PX4的固件版本信息,欢迎批评指正! PX4源码版本V1.…

mysql-联合查询

一.联合查询的概念 .对于unio查询,就是把多次查询的结果合并起来,形成一个新的查询果集。 SELECT 字段列表 FROM 表A... UNION[ALL] SELECT 字段列表 FROM 表B..., 二.将薪资低于5000的员工,和年龄大于50岁的员工全部查询出来 select * from emp where salary&…

使用 Apache Pulsar 构建弹性可扩展的事件驱动应用

本视频来自 2024 Apache Pulsar 欧洲峰会,由 David Kjerrumgaard, 《Pulsar in Action》书作者给大家带来的《使用 Apache Pulsar 构建弹性可扩展的事件驱动应用》分享。 嘉宾|David Kjerrumgaard,Apache Pulsar Committer,《Pul…

总结单例模式的写法

一、单例模式的概念 1.1 单例模式的概念 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。就是当前进程确保一个类全局只有一个实例。 1.2 单例模式的优…

基于php+mysql的简单图书管理系统(附源码)

一、模块设计 二、技术选型 IDE:phpstorm mysql:5.1 php:7.3.29 运行工具:phpstudy 三、数据库设计 用户表: CREATE TABLE t_user (id int(11) NOT NULL AUTO_INCREMENT,uname varchar(255) DEFAULT NULL,upass…

C语言的神髓

​​​​​​​ ​​​​​​​

记录些Redis题集(3)

分布式锁 分布式锁是一种用于在分布式系统中实现互斥访问的机制,它可以确保在多个节点、或进程同时访问共享资源。如果没有适当的锁机制,就可能导致数据不一致或并发冲突的问题。 分布式锁需要的介质 需要一个多个微服务节点都能访问的存储介质&#…

matine组件库踩坑日记 --- react

Mantine实践 一 禁忌核心css样式二 添加轮播图扩展组件 一 禁忌核心css样式 import React from react import ReactDOM from react-dom/client import { BrowserRouter } from react-router-dom; import App from ./App.jsx import ./index.css import mantine/core/styles.cs…

RocketMQ~架构了解

简介 RocketMQ 具有高性能、高可靠、高实时、分布式 的特点。它是一个采用 Java 语言开发的分布式的消息系统,由阿里巴巴团队开发,在 2016 年底贡献给 Apache,成为了 Apache 的一个顶级项目。 在阿里内部,RocketMQ 很好地服务了集…

DHCPv6 详情及其报文介绍 - 附配置案例及验证命令(Cisco)

DHCPv6 诞生的原因 IPv6 协议具有地址空间巨大的特点,但同时长达 128 比特的 IPv6 地址又要求高效合理的地址自动分配和管理策略。IPv6 无状态地址配置方式(RFC2462)是目前广泛采用的 IPv6 地址自动配置方式。配置了该协议的主机只需相邻设备…

红日靶场----(三)1.漏洞利用

上期已经信息收集阶段已经完成,接下来是漏洞利用。 靶场思路 通过信息收集得到两个吧靶场的思路 1、http://192.168.195.33/phpmyadmin/(数据库的管理界面) root/root 2、http://192.168.195.33/yxcms/index.php?radmin/index/login&am…

函数(实参以及形参)

实际参数(实参) 实际参数就是在调用函数时传递给函数的具体值。这些值可以是常量、变量、表达式或更复杂的数据结构。实参的值在函数被调用时传递给对应的形参,然后函数内部就可以使用这些值来执行相应的操作。 int main() {int a 0;int b …

一篇文章教你掌握——Pytorch深度学习实践基础

一篇文章教你掌握——Pytorch深度学习实践 1. Overview 概述1.1 Rule-based systems 基于规则的系统1.2 Classic machine learning 经典机器学习1.3 Representation learning 表征学习1.4 Brief history of neural networks 神经网络简史 2. 配置环境2.1 安装Anaconda2.2 创建虚…

奥利奥广告策略解析「扭一扭、舔一舔、泡一泡」广告为何深入人心?

作为一个多年的广告人,我认为奥利奥的「扭一扭、舔一舔、泡一泡」广告策略非常巧妙。今天可以从专业的角度来分析分析一下,大概应该有三大原因吧。 品牌识别度与记忆点: “扭一扭、舔一舔、泡一泡”这句广告语简洁易记,富有节奏…