`
猫耳呀
  • 浏览: 170649 次
社区版块
存档分类
最新评论

《CDN 之我见》系列二:原理篇(缓存、安全)

 
阅读更多

《CDN之我见》共由三个篇章组成,分为原理篇、详解篇和陨坑篇。本篇章适合那些从未接触过、或仅了解一些 CDN 专业术语,想深入了解和感受 CDN 究竟是什么的同学。本次由白金老师继续为大家分享《CDN之我见》系列二,主要讲解缓存是什么、工作的基本原理是怎样的,以及 CDN 是如何面对安全挑战的。

首先我们先来说一下 CDN 的缓存系统。

缓存也叫 Cache,是 CDN 领域最重要的一个组成部分,对于静态内容分发,大至视频点播、文件下载,小至 html 页面、jpg/gif/png 图片、css/js 等,都可以缓存到本地,最终用户(网民)访问时,不必回到原始服务器拿取数据,从而节省了时间、降低了源站服务器的网络带宽支出和负载。

对于 CDN 来说,每台 Cache 机器每天的请求量是十分惊人的,磁盘上所存储的内容量也多得可怕,十几块 TB 级的硬盘被塞满数据也是很正常的事情,因此当一个请求到来时,能迅速检索出磁盘上的文件并读取、吐给最终用户成了一件很重要的事情。

如何快速检索数据?

一般采用高效的数据结构或算法,例如 Hash(哈希)。

Hash 算法简单说就是通过某种模运算取余,按照有限余数做为不同链表的坐标进行数据存储。若当有多个数据余数相同时,则再按照单链表的方式存储数据。

理论上 Hash 算法在最好的情况下,和 map 无异,O(1) 的时间复杂度。

在最坏情况下(所有数据样本经过 Hash 运算都得到同一个余数),则性能与单链表无异,查找时间复杂度是 O(n)。

如果磁盘空间不够了怎么办?

使用基于访问热度的内容淘汰算法,例如 FIFO、LRU、LFU、SLRU、LIRS 等,感兴趣的同学可以看一下推荐的文章:

SATA 盘虽然存储空间大,但受寻道速度限制,IOPS 往往很低,响应时间会被拉长。而相比之下,SSD 可以大幅度提升响应速度,但受成本和技术工艺限制,SSD 盘的空间相比 SATA 而言要小很多、贵很多。综合上面两种情况,混合盘的分级存储模式诞生了,即 SSD + SATA,通过热度算法将最热的内容放到内存、次热放到 SSD,冷数据放到 SATA,最冷数据受磁盘空间限制不进行存储,直接从 upstream 或源站获取。

当网民访问到 Cache 服务器上时,Cache 服务器会利用 Hash 算法查找本地是否存有缓存数据,若有,则直接读取,组织成 HTTP 报文内容,吐给网民。

同理,若当本地没有缓存住的内容时,Cache 会向其上游(upstream)拿取数据吐给网民,并根据内容的描述(例如是否可以缓存,需要缓存多久)来决定是否/如何缓存住这个请求内容。

CDN 的关键技术是调度和缓存,有很多开源软件可以实现 CDN 的基本需求,但性能却远达不到商业需求。真正要做高性能的 Cache 系统,不仅需要在数据结构与算法层面深入,更要从硬件、操作系统、文件系统、底层原理等多个领域做更多的研究(例如阿里云自研的 CDN Cache 系统使用了裸盘技术)。
从上述内容大致可以看出一个道理:CDN,入门易,做好难!

原理篇最后一部分简单和大家介绍一下 CDN 的安全

一般的攻击分为两种类型,一种是蛮力型攻击,一种是技巧型攻击。
例如 SYN-Flooding、反射攻击、带宽饱和攻击等,都是通过海量请求(有些甚至是毫无用处的请求)将系统带宽资源、计算资源耗尽,从而达到使目标无法正常提供服务能力的目的,达到攻击者的攻击意图。
这种攻击的特点是:

  1. 攻击源分布广泛,攻击具有持续性,难以准确溯源
  2. 攻击手段暴力,流量大,以达到短时间不能服务为主要目的
  3. 技术门槛低,但由于需要众多资源,攻击成本较高

而例如 XSS 跨站、SQL 注入、CSRF、漏洞利用等,都是通过网站提供的系统(例如老版本操作系统存在协议栈崩溃漏洞)、组件(例如 bash、OpenSSL、Struts2 存在远程执行漏洞)、软件逻辑漏洞(例如输入框检测存在缺陷导致拼凑 SQL 语句的 SQL 注入漏洞)等来进行攻击。
这种攻击的特点是:

  1. 攻击流量小
  2. 攻击较为隐蔽,不易被察觉
  3. 以窃取内容为主要目的
  4. 攻击具有一定的破坏和不可逆性
  5. 无需大量攻击资源,攻击成本较低,技术含量较高

接入 CDN 后就可以规避安全风险吗?

是的,或者说可以从一定程度上尽可能解决或尽可能规避安全风险。

1. 隐藏源站信息

当某个网站接入 CDN 后,源站信息会被隔离,外界很难找到真正的源站地址(这里说很难,其实也是有可能的,主要看源站的安全防范意识),这样攻击者至少就无法直接对源站进行直接攻击。

2. 分布式架构

若做不到直接对源站进行直接攻击,则攻击者实际攻击的目标不是源站,而是 CDN 厂商的分布式架构,此时除非 CDN 厂商的所有 CDN 节点的所有服务器都被攻陷,否则仍然有部分服务器是可以提供服务的。

3. 安全防护

对于技巧型攻击,CDN 厂商前端可以通过前置应用层过滤器的技术来分析、拦截可能存在的安全隐患。(例如阿里云的 SCDN 则是集成了 Security 与 CDN 于一身的新产品)

作为“系列二”的最后收尾,我想强调的是,CDN 除了技术,还有例如后台支撑系统、售后、销售等一系列的组件和团队配合运作,才能有安全、高效、稳定、极佳用户体验感的 CDN 产品。

最后还是那句话:CDN,入门易,做好难!

__

由于篇幅的关系,系列二把上次欠大家的“原理篇”补充齐全!

“系列三” 将开启《CDN 之我见》的第二个篇章:“详解篇”,会针对 CDN 领域的一些鲜为人知的技术、理念进行深入剖析,各位看官敬请期待。

原文链接

分享到:
评论

相关推荐

    高可用分布式架构设计与实践-内训方案.pdf

    #### 第一课:知识原理篇 - **什么是架构的高可用** 架构的高可用性是指在系统发生故障时,能够保证业务不受影响或者影响最小化的能力。具体而言,高可用性的目标是确保系统在遇到单点或多个点故障的情况下仍然...

    各大知名网站系统架构

    9. **安全策略**:包括SSL/TLS加密、DDoS防护、身份验证、授权控制等,确保用户数据的安全。 10. **性能优化**:例如HTTP缓存、GZIP压缩、CDN内容分发网络等,用于提升用户体验。 通过深入研究这些知名网站的系统...

    淘宝网技术架构

    这篇博文链接虽然没有提供具体内容,但通常会涵盖一系列关键领域的知识,包括但不限于分布式系统、数据库管理、缓存策略、负载均衡、高可用性设计、安全机制、数据处理以及性能优化等方面。以下是对这些核心知识点的...

    【cc】最新仿蚂蚁帮扶、众人帮任务悬赏平台系统源码.zip

    本篇将围绕"最新仿蚂蚁帮扶、众人帮任务悬赏平台系统源码"进行深入探讨,解析其背后的关键技术与设计思路。 一、系统架构设计 1. 前端界面:仿制源码中前端部分主要负责展示任务列表、用户个人信息、任务详情等,...

    完整网店源代码 网店系统

    本篇将详细探讨"网店系统4.1"的源代码,帮助读者深入理解其工作原理,以及如何进行定制与优化。 一、系统概述 "完整网店源代码 网店系统4.1"是一款基于Web的电子商务解决方案,其核心在于提供一个稳定、安全、功能...

    PHPCMS_整站代码分析讲解

    本篇将围绕"PHPCMS整站代码分析讲解"的主题,深入探讨其核心架构、主要模块以及关键代码实现。 首先,理解PHPCMS的架构至关重要。PHPCMS采用MVC(Model-View-Controller)设计模式,这种模式将业务逻辑、数据模型和...

    新闻发布系统

    14. **性能优化**:通过缓存技术、负载均衡、CDN等手段提高系统性能,应对高并发访问。 综上所述,一个完整的新闻发布系统涉及众多技术和功能,涵盖了从内容创作到发布的全过程,同时也注重用户体验和数据安全性。...

    一些前端面试题.pdf

    例如,一篇博客文章、一个新闻报道或者论坛帖子。 2. **`<section>`**: 代表文档中的一个独立区域,通常用来组织具有共同主题的相关内容。它可以包含多个`<article>`或其他`<section>`元素。 3. **`<nav>`**: 专门...

    Java 开发--基于JSP电子商务系统?(论文).rar

    对于JSP应用,可以通过缓存、减少不必要的数据库查询、使用CDN(内容分发网络)等方式提升性能。 以上就是基于JSP的电子商务系统开发的一些核心知识点,具体的论文可能会详细讨论这些点,并提供实际的代码示例和...

    Filesystem:内部文件服务器的文件系统

    5. **静态资源托管**:在大型项目中,CSS和其他静态资源可能被托管在CDN(内容分发网络)上,这涉及到文件系统的分布式存储和高速缓存。 6. **热更新**:实时预览CSS更改,文件系统监视器(如LiveReload)会检测到...

    兑吧(33问).pdf

    本篇文档是一份前端面试题集合,包含了一系列前端开发者在面试过程中可能遇到的问题,覆盖了前端开发的多个方面,例如前端性能优化、状态管理、前端工程化、CSS、JavaScript、网络请求、安全性、兼容性等知识点。...

Global site tag (gtag.js) - Google Analytics