[转帖]CDN调度及管理类

cdn,调度,管理 · 浏览次数 : 0

小编点评

**CDN系统中央如何管?地方如何干?** CDN系统中的中央负责决策下达,而地方负责执行决策并提供最终服务。 * **中央** * 负责区域节点的配置和管理。 * 负责区域间调度。 * 负责日志采集和分析。 * **地方** * 负责区域内边缘节点的配置和管理。 * 负责区域内调度。 * 负责缓存源站内容。 **合理的调度如何实现?** 1. **基于Local DNS's IP的调度**:GSLB根据Local DNS的IP返回一个距Local DNS最近的边缘节点IP,但用户可能会设置错误的Local DNS,所以这种调度的准确性不高,据说准确率只有85%左右。 2. **基于Client's IP的调度** :GSLB通过302跳转获取到Client IP,保证了调度的准确率可达99%左右,但缺陷也很明显,多了一个步骤就多一些时间损耗,同时也给GSLB带来很大的性能压力。

正文

CDN调度及管理类

设计CDN系统最关键的两个问题是:中央怎么管?地方怎么干?那么今天,我们就来简单探讨一下"中央怎么管"的问题。

 

管理是为了合理的调度,合理的调度是为了提升整个组织的效益。所以提升效益才是最终目的,管理只是途径而已。那CDN系统是通过怎样的管理与调度,实现组织利益最大化的呢?请带着这个问题往下看。

 


 

一、有效的管理

 

先来回顾一下这张图:

这张图只反映了源站与加速节点之间的关系,然而一个有效的CDN系统想要高效的运转,还需区域节点和中心节点的参与。所以经典的CDN三层架构,如下图:

看到这张图,我相信你已经明白了CDN的管理模式:典型的金字塔型组织结构,中心节点负责决策下达(返回距离用户最近的边缘节点IP),边缘节点负责实际输出(返回终端用户实际请求的数据),区域节点负责管理边缘节点并且对中心节点的决策负责。

 

这里面比较难理解就是区域节点,它们起到了承上启下的作用。一般区域节点需要做以下几件事:

(1)监控边缘节点,通过ICMP探测、PORT探测、内容探测等方式探测边缘节点的健康状况。

(2)均衡边缘节点,通过合理的调度(下文有详细阐述),实现区域内边缘节点的负载均衡。

(3)缓存源站内容,出于对源站的保护以及边缘节点回源性能的考虑,区域节点同时还充当着"中间源"的角色。

(4)日志采集,日志关系到计费与运营分析,一般是由区域节点统一采集之后上传至日志分析系统。

(5)配置管理,对区域内边缘节点的配置进行统一管理,如果有某个节点下线,可及时将对应的配置下发到替补节点上。

 

为了便于大家更直观的理解,我将上面两张图进行逻辑上的合并,得到下图:

看完这三张图,我想不用我多说,你就已经明白了CDN的管理方式,然而正如之前我所说,管理是为了更合理的调度(当然严格来说,调度也属于管理的范畴,这里分开阐述是因为调度是CDN系统中比较关键的一部分内容),那接下来,就让我们来看一下CDN到底是如何调度的。

 


 

二、合理的调度

 

1、调度方法

 

(1)基于Local DNS's IP的调度

我们在《浅谈CDN(一)》中有提及到基于DNS实现全局负载均衡的方式:

我将它与我们今天讲的CDN三层架构进行逻辑合并之后,得到下图:

 

GSLB确实会根据Local DNS的IP返回一个距Local DNS最近的边缘节点IP,但用户可能会设置错误的Local DNS,所以这种调度的准确性不高,据说准确率只有85%左右。除此之外,Local DNS的缓存还会导致GSLB的失效以及无法灵活应对边缘节点故障的问题。

 

(2)基于Client's IP的调度

正是由于上一种方式的种种不足,所以会存在302调度这种方案。为了很好的进行比较,我也给出一张图:

通过对比,我们很容易发现:基于302调度比基于DNS调度多了一个302跳转的步骤。正是这个302跳转,让GSLB获取到了Client IP,保证了调度的准确率,这种方式的准确率可达99%左右,但缺陷也很明显,多了一个步骤就多了一些时间损耗,同时也给GSLB带来很大的性能压力。

 

由于这两种方式都存在着各自的优缺点,谁也无法完全替代谁,所以他们是一种共存的状态。当请求小文件时,302的延时甚至可能大于直接从一个较远的节点获取文件的延时,所以总结起来就一句话:请求大文件才会用到302跳转。一般来说视频、压缩包,默认就会被认为是大文件(通过文件后缀判断),所以在点播和下载加速的场景中才会用到302调度。

 

合理的调度不仅体现在智能的调度方法上,还体现在全面的调度策略上。那接下来让我们看看GSLB具备哪些调度策略。

 

2、调度策略

 

(1)静态策略

 

静态策略是预先配置好且固定不变的,缺乏灵活性,在运行一段时间后很容易出现失衡的局面,所以需要下面的动态策略来进行辅助修正。

 

(2)动态策略

 

与前面说到的两种调度方法一样,静态与动态这两种调度策略也是存在各自的优缺点。静态策略,太死板容易导致组织"失衡",动态策略,领导者劳心劳力且决策周期长。因此在实际生产中,静态和动态是结合使用的。正常情况下,第一层调度(区域间调度)采用静态调度较多,第二层调度(区域内调度)采用动态调度较多。

 


 

好了,今天花了较长的篇幅介绍了CDN系统是如何管理以及如何调度的。我也感叹这其中的技术细节深不可测,很多内容我也是一知半解,所以我如果有什么写得不对的地方,还望大家帮忙指出。期待与大家共同探讨,共同进步。

与[转帖]CDN调度及管理类相似的内容:

[转帖]CDN调度及管理类

CDN调度及管理类 设计CDN系统最关键的两个问题是:中央怎么管?地方怎么干?那么今天,我们就来简单探讨一下"中央怎么管"的问题。 管理是为了合理的调度,合理的调度是为了提升整个组织的效益。所以提升效益才是最终目的,管理只是途径而已。那CDN系统是通过怎样的管理与调度,实现组织利益最大化的呢?请带着

[转帖]nginx源码编译及优化

Apache与nginx的区别 apache: 进程,稳定模块超多,基本想到的都可以找到少bug ,nginx 的bug 相对较多 nginx: 线程,快,不稳定。多线程是共享的,一个线程出问题,其他的也会受牵连。7层调度,反向代理能力强。CDN这块nginx也用的多轻量级,同样起web 服务,比a

[转帖]什么是CDN?CDN的工作原理是怎样的?

1.什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术

[转帖]简单介绍四种IO模型

https://cdn.modb.pro/db/525350 当一个网络IO发生(假设是read)时,它会涉及两个系统对象,一个是调用这个IO的进程,另一个是系统内核。当一个read操作发生时,它会经历两个阶段:①等待数据准备;②将数据从内核拷贝到进程中。为了解决网络IO中的问题,提出了4中网络IO

[转帖]绕过CDN寻找网站真实IP的方法汇总

https://www.jianshu.com/p/a6d2a52454a3 工作所需,将”绕过CDN寻找网站真实IP“的方法进行汇总。打开笔记,发现保存了好几篇以前收集的一些相关文章。文章都比较类似,方法大同小异,做个汇总,也添加一些自己积累。 0x01 判断ip是否为网站真实ip 这个就很简单了

[转帖]绕过CDN查看网站真实IP

https://www.itblogcn.com/article/viewcdnip.html 这是一个总结帖,查了一下关于这个问题的国内外大大小小的网站,对其中说的一些方法总结归纳形成。 首先,先要明确一个概念,如果人CDN做得好,或者整个站都用CDN加速了,你是几乎找不到他的源站IP的,因为对于

[转帖]一文带你搞懂 CDN 的技术原理

http://blog.itpub.net/31545813/viewspace-2924432/ 网络通信/物联网 编辑:李雪薇 时间:2022-11-22 09:11:41 1330 0 CDN 的全称是 Content Delivery Network,即内容分发网络。其目的是通过在现有的In

[转帖]MySQL提升笔记(4)InnoDB存储结构

https://cdn.modb.pro/u/310923 这一节本来计划开始索引的学习,但是在InnoDB存储引擎的索引里,存在一些数据存储结构的概念,这一节先了解一下InnodDB的逻辑存储结构,为索引的学习打好基础。 从InnoDB存储引擎的存储结构看,所有数据都被逻辑地放在一个空间中,称之为

[转帖]面渣逆袭:二十二图、八千字、二十问,彻底搞定MyBatis!

https://cdn.modb.pro/db/334793 大家好,我是老三,面渣逆袭系列继续,这节我们的主角是MyBatis,作为当前国内最流行的ORM框架,是我们这些crud选手最趁手的工具,赶紧来看看面试都会问哪些问题吧。 基础 1.说说什么是MyBatis? MyBatis logo 先吹

[转帖]分享自己做的一个指定进程以及线程长时间cpu监控的工具

https://cdn.modb.pro/db/329601 前言: 前面给大家分享过一个工作中用到的编译拷贝脚本,其实工作中还有一些其他工具的使用,今天再来分享一个自己纯手工的CPU监控的脚本。大家可以结合上篇文章与本篇文章一起学习shell。 主要实现功能: 1.监控指定进程是否运行 2.读取该