CDN架构

2023-11-07

CDN公司在整个互联网中部署了数以百计的节点(Cache服务器集群)。这些Cache服务器都分布在各个网络运营商的IDC机房中,位置尽量靠近用户网络。CDN系统将内容从源站复制到各个节点,在内容提供者更新内容时,CDN系统将更新后的内容重新分发到各个节点。当用户请求内容时,CDN系统将选择一个最优的节点向用户提供内容。这个挑选最优节点的过程,就是负载均衡。而这个最优节点,可能最接近用户,或者有一条与用户之间条件最好的路径。

一、功能架构

功能架构图

1、分发服务系统

  • 其基本的工作单元就是各个Cache服务器。负责直接响应用户请求,将内容快速分发到用户;同时还负责内容更新,保证和源站内容的同步。
  • 根据内容类型和服务种类的不同,分发服务系统分为多个子服务系统,如:网页加速服务、流媒体加速服务、应用加速服务等。每个子服务系统都是一个分布式的服务集群,由功能类似、地域接近的分布部署的Cache集群组成。
  • 在承担内容同步、更新和响应用户请求之外,分发服务系统还需要向上层的管理调度系统反馈各个Cache设备的健康状况、响应情况、内容缓存状况等,以便管理调度系统能够根据设定的策略决定由哪个Cache设备来响应用户的请求。

2、负载均衡系统:

  • 负载均衡系统是整个CDN系统的中枢。负责对所有的用户请求进行调度,确定提供给用户的最终访问地址。
  • 使用分级实现。最基本的两极调度体系包括全局负载均衡(GSLB)和本地负载均衡(SLB)。
  • GSLB根据用户地址和用户请求的内容,主要根据就近性原则,确定向用户服务的节点。一般通过DNS解析或者应用层重定向(Http 3XX重定向)的方式实现。
  • SLB主要负责节点内部的负载均衡。当用户请求从GSLB调度到SLB时,SLB会根据节点内各个Cache设备的工作状况和内容分布情况等对用户请求重定向。SLB的实现有四层调度(LVS)、七层调度(Nginx)和链路负载调度等。

3、管理系统:

  • 分为运营管理和网络管理子系统。
  • 网络管理系统实现对CDN系统的设备管理、拓扑管理、链路监控和故障管理,为管理员提供对全网资源的可视化的集中管理,通常用web方式实现。
  • 运营管理是对CDN系统的业务管理,负责处理业务层面的与外界系统交互所必须的一些收集、整理、交付工作。包括用户管理、产品管理、计费管理、统计分析等。

4、小结:

  • CDN系统中,分发服务器系统、调度控制系统和运营管理系统都是分级分布式部署的。CDN系统本身就是一个具有中央控制能力的分布式服务系统。

二、部署架构

部署架构图

1、层级划分:

  • CDN系统中,直接面向用户,负责给用户提供内容服务的的Cache设备都部署在整个CDN网络的边缘位置,所以将这一层称为边缘层。
  • CDN系统中,中心层负责全局的管理和控制,同时也保存了最多的内容Cache。在边缘层设备未能命中Cache时,需要向中心层设备请求;而中心层未能命中时,则需要向源站请求。不同的CDN系统设计存在差异,中心层可能具备用户服务的能力,也可能只会向下一层提供服务。
  • 如果CDN系统比较庞大,边缘层向中心层请求内容太多,会造成中心层负载压力太大。此时,需要在中心层和边缘层之间部署一个区域层,负责一个区域的管理和控制,也可以提供一些内容Cache供边缘层访问。

2、边缘节点的负载均衡:

  • 这里写图片描述
  • Cache设备和负载均衡设备的连接方式有如上两种:穿越方式和旁路方式。
  • 穿越方式下,SLB一般使用L4-7层的交换机实现,SLB对外提供可访问的公网IP,而各个Cache设备只分配私网IP。一个SLB下挂载的所有Cache设备构成一个服务集群。所有的用户请求都要先经过SLB,再由SLB将请求向Cache设备转发。SLB对外部用户屏蔽了Cache地址,具有较好的安全性和可靠性;但是在节点负载较大时,SLB设备容易成为性能瓶颈。另外,可以通过软件方式实现穿越方式:LVS(四层)和Nginx(七层)。
  • 旁路模式下,SLB和Cache设备都分配有外网IP,使用并联方式连接。用户请求先到达SLB,SLB再将请求重定向到Cache设备。此种方式部署灵活,扩展性好。但是SLB和Cache设备都直接面向用户,并且需要应用层重定向,安全性较差。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CDN架构 的相关文章

  • C/C++访问MySQL数据库

    C C 访问MySQL数据库 VS2019配置 打开mysql的安装目录 默认安装目录如下 C Program Files MySQL MySQL Server 8 0 确认 lib 目录和include 目录是否存在 打开VS2019 新

随机推荐

  • 如何将自己的项目jar包打包成docker 镜像

    首先将自己的项目打包成jar 并在自己本地先用java jar xxx jar启动下 看是否可以启动 随后将自己的jar包同级目录创建一个Dockerfile文件 并用notepad打开 文件无后缀 FROM kdvolder jdk8 V
  • linux下手动安装编译的通用步骤

    手动安装编译的通用步骤 在自己的下载目录中 1 在官网下载压缩包 wget xxx 2 解压文件 tar zxf xxx 3 开始编译安装 查看解压的目录下的文件 是config还是autogen之类的 来决定使用 autogen sh还是
  • 如何使用memset函数

    如何使用memset函数 memset用处 memset使用方法 memset用处 memset函数是主要用于初始化字符串的一个函数 也可以用于初始化自定义类型数组 结构体数组和其他类型数组 memset使用方法 memset函数原型如下
  • 机器学习19:反卷积算法

    机器学习19 反卷积算法 转载和整理 在整理全卷积网络的过程中 被反卷积的概念困扰很久 于是将反卷积算法单独整理为一篇博客 本文主要转载和整理自知乎问题如何通俗易懂地解释反卷积 中的高票答案 1 反卷积概述 应用在计算机视觉的深度学习领域
  • java将本地图片复制添加水印并导出到本地

    模板信息 package com example demo ChartGraphics import com sun image codec jpeg JPEGCodec import com sun image codec jpeg JP
  • Mybatis动态公用sql

  • 文件夹自动同步工具

    这是我之前开发的文件夹自动同步工具 主要实现开发机和服务器之间的文件夹同步 项目地址 https github com mike zhang autoSync 问题描述 在windows下修改代码 到服务器上去编译 但每次都要通过winsc
  • JAR 文件揭密

    JAR 文件揭密 探索 JAR 文件格式的强大功能 转载 原文地址 http www ibm com developerworks cn java j jar 简介 大多数 Java 程序员都熟悉对 JAR 文件的基本操作 但是只有少数程序
  • 【c++ 之 多态】

    目录 前言 多态 认识多态 多态的定义与实现 构成多态的条件 虚函数 1 协变 基类与派生类虚函数返回值不同 2 析构函数的重写 c 11 两个虚函数修饰关键字 final override 重载 重写 重定义再理解 抽象类 抽象类的概念
  • 飞书“蒙冤”,还是舆论有噪声?

    飞书遭微信大范围屏蔽 添加好友 共享文档等功能遭禁 初次看到这个消息的时候并没有过于惊讶 毕竟头条系和腾讯的 摩擦 早已是公关圈老生常谈的话题 双方的较量从2017年底至今 已是3年持久战 这次的较量又有些不同 有人大肆渲染飞书在帮助中小企
  • python绘制三维图

    作者 桂 时间 2017 04 27 23 24 55 链接 http www cnblogs com xingshansi p 6777945 html 本文仅仅梳理最基本的绘图方法 一 初始化 假设已经安装了matplotlib工具包
  • Hadoop集群的9870页面,DataNode启动不了的解决办法

    原因 多次格式化hdfs namenode format的操作 配置文件错误或者说修改过master配置没有进行格式化后续操作
  • Android平台GB28181设备接入端如何实时更新经纬度实现国标平台侧电子地图位置标注

    技术背景 我们在做GB28181设备接入端的时候 其中有个功能 不难但非常重要 那就是GB28181实时位置的订阅 mobileposition subscribe 和上报 notify 特别是执法记录仪 智能安全帽 车载终端等场景下 现场
  • mysql show variables sql_mode_MySQL的三种常见sql_mode

    MySQL数据库的中有一个环境变量sql mode 定义了mysql应该支持的sql语法 数据校验等 我们可以通过以下方式查看当前数据库使用的sql mode mysql gt select sql mode sql mode STRICT
  • 投稿指南【NO.12_8】【极易投中】核心期刊投稿(组合机床与自动化加工技术)

    近期有不少同学咨询投稿期刊的问题 大部分院校的研究生都有发学术论文的要求 少部分要求高的甚至需要SCI或者多篇核心期刊论文才可以毕业 但是核心期刊要求论文质量高且审稿周期长 所以本博客梳理一些计算机特别是人工智能相关的期刊 供大家参考投稿
  • 可视化笔记3--matplotlib 常见图形绘制3

    可视化笔记3 matplotlib 常见图形绘制3 接着上一篇博文 继续简单学习了下matplotlib绘图功能 基本包括 图片保存及工具栏使用 区域填充 形状绘制 图形美化 绘制极坐标 绘制积分函数 散点和条形图综合案例 相应学习笔记分享
  • 什么是HIS,以及HIS的作用,特点,组成部分

    什么叫HIS HIS系统定制开发服务 HIS系统作用 HIS系统开发价格 HIS系统的主要组成部分 HIS系统的基本概述 HIS 即Hospital Information System 直译为中文就是医院信息系统利用计算机软硬件技术 网络
  • VSCode搭建STM32开发环境

    废话不多说 直接步入正题 所需软件如下 GNU Arm Embedded Toolchain Mingw w64 make openocd STM32CubeMx VSCode 一 环境篇 1 GNU Arm Embedded Toolch
  • OpenCV与图像算法笔记

    本博客为 OpenCV算法精解 基于Python与C 一书 参阅源代码链接 的阅读笔记 根据理解对书中绝大多数算法做了总结和描述 对Numpy较为熟悉 Python方面仅对与C 不同的注意事项做了标注 书作者整体按照冈萨雷斯的经典教材 数字
  • CDN架构

    CDN公司在整个互联网中部署了数以百计的节点 Cache服务器集群 这些Cache服务器都分布在各个网络运营商的IDC机房中 位置尽量靠近用户网络 CDN系统将内容从源站复制到各个节点 在内容提供者更新内容时 CDN系统将更新后的内容重新分