首页 > 其他分享 >什么是CDN

什么是CDN

时间:2024-04-26 10:59:22浏览次数:21  
标签:缓存 CDN LocalDns 节点 域名 服务器 什么

参考:https://cloud.tencent.com/developer/article/2090707
https://blog.csdn.net/weixin_40381947/article/details/131409507

CDN

  • CDN的全称是Content Delivery Network,即内容分发网络。
  • CDN是Content Delivery Network(内容分发网络)的缩写,是一种利用分布式节点技术,在全球部署服务器,即时地将网站、应用、视频、音频等静态或动态资源内容分发到用户所在的最近节点,提高用户访问这些内容的速度和稳定性,降低网络拥塞和延迟,同时也能够减轻源站的负载压力,提升网站或应用的可用性和安全性。

CDN主要作用

  1. 加速内容传输:CDN 在全球范围内部署了多个服务器节点,将网站的静态资源和动态内容缓存到靠近用户的边缘服务器上。这样,当用户请求访问网站时,可以从最近的边缘服务器获取内容,减少了传输延迟和网络拥塞,提高了页面加载速度。
  2. 减轻源服务器负载:CDN 的边缘服务器能够缓存和提供网站内容的副本,当用户请求访问时,不必每次都访问源服务器。这有效减轻了源服务器的负载压力,提升了整体的性能和可扩展性。
  3. 提高全球访问速度:由于 CDN 在全球各地都有服务器节点,通过智能的路由选择,用户可以从最近的边缘服务器获取内容,大大减少了数据在互联网上的传输距离和时间,从而提高了全球用户的访问速度和响应时间。
  4. 增强网站的稳定性和可靠性:CDN 具备容错和冗余机制,如果某个边缘节点出现故障,请求会自动切换到其他可用的节点上。这种冗余机制提高了网站的稳定性和可用性,防止单点故障导致整个系统不可用。
  5. 抵御DDoS攻击:CDN 可以提供一定程度的分布式拒绝服务(DDoS)攻击防护能力。由于 CDN 分散了流量并具备弹性扩展能力,可以对来自恶意请求的攻击进行过滤和缓解,确保正常用户访问不受干扰。
  6. 降低成本:通过CDN可以降低带宽和服务器的成本,提高用户体验的同时,降低网站运营成本。

基本原理

  • CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
  • 简单来说,CDN就是一个分布式的缓存服务器,存着非常多文件,并且分布在世界各地,每个人都能就近访问

访问过程

传统访问过程

image
由上图可见,用户访问未使用CDN缓存网站的过程为:

  1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的 ip 地址
  2. LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
  3. ROOT DNS将域名授权 dns记录回应给 LocalDns
  4. LocalDns 得到域名的授权 dns 记录后,继续向域名授权 dns 查询域名的 ip 地址
  5. 域名授权 dns 查询域名记录后,回应给 LocalDns
  6. LocalDns 将得到的域名ip地址,回应给 用户端
  7. 用户得到域名 ip 地址后,访问站点服务器
  8. 站点服务器应答请求,将内容返回给客户端

CDN访问过程

image

通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:

  1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.
  2. LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
  3. ROOT DNS将域名授权dns记录回应给 LocalDns
  4. LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
  5. 域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns- LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址- 智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns
  6. LocalDns 将得到的域名ip地址,回应给 用户端- 用户得到域名ip地址后,访问站点服务器
  7. CDN 节点服务器应答请求,将内容返回给客户端。(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)

通过以上的分析我们可以得到,为了实现对普通用户透明(使用缓存后用户客户端无需进行任何设置)访问需要使用 DNS(域名解析)来引导用户来访问 Cache 服务器,以实现透明的加速服务。由于用户访问网站的第一步就是域名解析,所以通过修改dns来引导用户访问是最简单有效的方式。

CDN组成

  • CDN网络主要由中心节点、边缘节点两部分构成。

中心节点

  • 中心节点包括CDN网管中心和全局负载均衡DNS重定向解析系统,负责整个CDN网络的分发及管理。

边缘节点

  • CDN边缘节点主要指异地分发节点,由负载均衡设备、高速缓存服务器两部分组成。
  • 负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时还负责收集节点与周围环境的信息,保持与全局负载均衡DNS的通信,实现整个系统的负载均衡。
  • 高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。
  • 通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中Cache服务器就像网站的原始服务器一样,响应终端用户的请求。因其距离用户更近,故其响应时间才更快。
  • 中心节点就像仓配网络中负责货物调配的总仓,而边缘节点就是负责存储货物的各个城市的本地仓库。

CDN相关技术

缓存算法

缓存代理软件:Squid。 缓存算法决定命中率、源服务器压力、FTP节点存储能力。

分发能力

分发能力取决于IDC能力和IDC策略性分布。

负载均衡

负载均衡软件:Nginx。 负载均衡(智能调度)决定最佳路由、响应时间、可用性、服务质量。

基于DNS

DSN服务器软件:BIND

  1. 基于DNS的负载均衡以CNAME实现域名中转,智取最优节点服务。
  2. 存点有客户端浏览器缓存、本地DNS服务器缓存。
  3. 缓存内容有DNS地址缓存、客户请求内容缓存、动态内容缓存。

标签:缓存,CDN,LocalDns,节点,域名,服务器,什么
From: https://www.cnblogs.com/hasome/p/18159495

相关文章

  • 什么是K8s架构?一文让你全面了解K8s(Kubernetes)
    K8S架构定义K8S是一个开源的容器部署和管理平台。它提供容器编排、容器运行时、以容器为中心的基础设施编排、负载平衡、自我修复机制和服务发现。K8S体系结构,有时也称为K8S应用程序部署体系结构或K8S客户端-服务器体系结构,用于跨主机集群组成、扩展、部署和管理应用程序容器......
  • DevOps到底是什么?DevOps能够给我们带来什么
    DevOps到底是什么?DevOps能够给我们带来什么一、DevOps的定义是什么?DevOps是开发(Dev)和运营(Ops)的复合词,它将人、流程和技术结合起来,不断地为客户提供价值。DevOps对团队意味着什么?DevOps使以前孤立的角色(开发、IT运营、质量工程和安全)可以协调和协作,以生产更好、......
  • Devops基本概念和原理,什么是 DevOps? DevOps 介绍
    Devops基本概念和原理,什么是DevOps?DevOps介绍一、什么是DevOps1、DevOps概述DevOps,即DevelopmentandOperations,是一组过程、方法与系统的统称,用于促进软件开发、运维和质量保障部门之间的沟通、协作与整合。DevOps的出现是由于软件行业日益清晰的认识到:为了按时交付......
  • 在 windows 上运行的 podman 默认的挂载相对路径是什么
    我在windows运行podman当成docker的代替品,从网上抄了ollama的部署命令,发现里面存在一个相对路径的挂载文件夹。我期望拿到ollama的下载内容,需要寻找到podman默认的挂载路径,但在网上找了一圈,可能是我的关键词问题,没有找到,于是记录本文期望能帮到大家如下面命令podman......
  • 什么是 Docker?Docker详解,7分钟学会
    Docker容器是一种打包格式,可通过标准格式打包应用的所有代码和依赖关系,确保应用能够快速、可靠地在计算环境下运行。Docker容器是一种广受欢迎的轻量级、可执行的独立容器,其中包含应用运行所需的一切要素,包括库、系统工具、代码和运行时。此外,Docker还是一个软件平台,支持开发人......
  • 计算机为什么需要中断?
    //generatedbyChatGPT-3.5&hk416hasu 中断是计算机系统中一种重要的机制,它允许系统在执行过程中临时中止当前任务,转而处理其他优先级更高或更紧急的任务,然后再返回原来的任务。以下是一些计算机需要中断的原因: 1.响应外部事件:计算机系统需要能够响应各种外部......
  • 什么是DTU和串口服务器的区别
    在工业物联网的快速发展中,数据传输单元(DTU)和串口服务器作为两种关键设备,各自扮演着重要的角色。对于传统行业来说,了解它们的基本概念和区别,有助于更好地选择和应用这些技术,提升生产效率和智能化水平。本文将向传统行业解释DTU和串口服务器的基本概念,并探讨它们之间的主要区别......
  • Iterator 和 ListIterator 有什么区别?
    前言Iterator和ListIterator都是Java集合框架中的迭代器接口,它们都可以用于遍历集合中的元素。ListIterator继承自Iterator接口,因此ListIterator可以用于任何实现了Iterator接口的集合,如List和Set。以下是两者的主要区别:原始集合类型的差别Iterator可以遍历Collection中的元......
  • 为什么要⽤ Foundry
    Foundry 为什么要⽤Foundry 快-加速开发 Solidity-减少上下⽂切换 功能丰富 ⾜够轻量 Foundry的组件 forge cast anvil 安装 https://getfoundry.sh/ curl-Lhttps://foundry.paradigm.xyz|bashfoundryup Cast-与链交互的⼯具箱RPC cast......
  • 《为什么我们总是在防御》
    《为什么我们总是在防御》作者:[美]约瑟夫·布尔戈基本信息主要主题这本书的主要主题是探索人类心理防御机制的起源、功能及其在个体和社会生活中的广泛应用,以及如何识别和处理这些无意识的心理防御行为以促进个人成长和社会关系的健康。体裁社科/心理学/自我发展最吸......