0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是CDN ?CDN工作原理是什么?

程序员cxuan 来源:JavaGuide 作者:Guide 2022-10-21 15:34 次阅读

什么是 CDN ?

CDN全称是 Content Delivery Network/Content Distribution Network,翻译过的意思是内容分发网络。

我们可以将内容分发网络拆开来看:

内容 :指的是静态资源比如图片、视频、文档、JS、CSS、HTML。

分发网络 :指的是将这些静态资源分发到位于多个不同的地理位置机房中的服务器上,这样,就可以实现静态资源的就近访问比如北京的用户直接访问北京机房的数据。

所以,简单来说,CDN 就是将静态资源分发到多个不同的地方以实现就近访问,进而加快静态资源的访问速度,减轻服务器以及带宽的负担。

类似于京东建立的庞大的仓储运输体系,京东物流在全国拥有非常多的仓库,仓储网络几乎覆盖全国所有区县。这样的话,用户下单的第一时间,商品就从距离用户最近的仓库,直接发往对应的配送站,再由京东小哥送到你家。

e841f26c-50fa-11ed-a3b6-dac502259ad0.png

京东仓配系统

你可以将 CDN 看作是服务上一层的特殊缓存服务,分布在全国各地,主要用来处理静态资源的请求。

e85dadf4-50fa-11ed-a3b6-dac502259ad0.png

CDN 简易示意图

我们经常拿全站加速和内容分发网络做对比,不要把两者搞混了!全站加速(不同云服务商叫法不同,腾讯云叫 ECDN、阿里云叫 DCDN)既可以加速静态资源又可以加速动态资源,内容分发网络(CDN)主要针对的是静态资源。

e87aac42-50fa-11ed-a3b6-dac502259ad0.png

绝大部分公司都会在项目开发中交使用 CDN 服务,但很少会有自建 CDN 服务的公司。基于成本、稳定性和易用性考虑,建议直接选择专业的云厂商(比如阿里云、腾讯云、华为云、青云)或者 CDN 厂商(比如网宿、蓝汛)提供的开箱即用的 CDN 服务。

很多朋友可能要问了:既然是就近访问,为什么不直接将服务部署在多个不同的地方呢?

成本太高,需要部署多份相同的服务。

静态资源通常占用空间比较大且经常会被访问到,如果直接使用服务器或者缓存来处理静态资源请求的话,对系统资源消耗非常大,可能会影响到系统其他服务的正常运行。

同一个服务在在多个不同的地方部署多份(比如同城灾备、异地灾备、同城多活、异地多活)是为了实现系统的高可用而不是就近访问。

CDN 工作原理是什么?

搞懂下面 3 个问题也就搞懂了 CDN 的工作原理:

静态资源是如何被缓存到 CDN 节点中的?

如何找到最合适的 CDN 节点?

如何防止静态资源被盗用?

静态资源是如何被缓存到 CDN 节点中的?

你可以通过预热的方式将源站的资源同步到 CDN 的节点中。这样的话,用户首次请求资源可以直接从 CDN 节点中取,无需回源。这样可以降低源站压力,提升用户体验。

如果不预热的话,你访问的资源可能不再 CDN 节点中,这个时候 CDN 节点将请求源站获取资源,这个过程是大家经常说的回源。

命中率和回源率是衡量 CDN 服务质量两个重要指标。命中率越高越好,回源率越低越好。

如果资源有更新的话,你也可以对其刷新,删除 CDN 节点上缓存的资源,当用户访问对应的资源时直接回源获取最新的资源,并重新缓存。

如何找到最合适的 CDN 节点?

GSLB (Global Server Load Balance,全局负载均衡)是 CDN 的大脑,负责多个 CDN 节点之间相互协作,最常用的是基于 DNS 的 GSLB。

CDN 会通过 GSLB 找到最合适的 CDN 节点,更具体点来说是下面这样的:

浏览器向 DNS 服务器发送域名请求;

DNS 服务器向根据 CNAME( Canonical Name ) 别名记录向 GSLB 发送请求;

GSLB 返回性能最好(通常距离请求地址最近)的 CDN 节点(边缘服务器,真正缓存内容的地方)的地址给浏览器;

浏览器直接访问指定的 CDN 节点。

e8c167d6-50fa-11ed-a3b6-dac502259ad0.png

CDN 原理示意图

为了方便理解,上图其实做了一点简化。GSLB 内部可以看作是 CDN 专用 DNS 服务器和负载均衡系统组合。CDN 专用 DNS 服务器会返回负载均衡系统 IP 地址给浏览器,浏览器使用 IP 地址请求负载均衡系统进而找到对应的 CDN 节点。

GSLB 是如何选择出最合适的 CDN 节点呢?GSLB 会根据请求的 IP 地址、CDN 节点状态(比如负载情况、性能、响应时间、带宽)等指标来综合判断具体返回哪一个 CDN 节点的地址。

如何防止资源被盗刷?

如果我们的资源被其他用户或者网站非法盗刷的话,将会是一笔不小的开支。

解决这个问题最常用最简单的办法设置Referer 防盗链,具体来说就是根据 HTTP 请求的头信息里面的 Referer 字段对请求进行限制。我们可以通过 Referer 字段获取到当前请求页面的来源页面的网站地址,这样我们就能确定请求是否来自合法的网站。

CDN 服务提供商几乎都提供了这种比较基础的防盗链机制。

e8d21324-50fa-11ed-a3b6-dac502259ad0.png

腾讯云 CDN Referer 防盗链配置

不过,如果站点的防盗链配置允许 Referer 为空的话,通过隐藏 Referer,可以直接绕开防盗链。

通常情况下,我们会配合其他机制来确保静态资源被盗用,一种常用的机制是时间戳防盗链。相比之下,时间戳防盗链的安全性更强一些。时间戳防盗链加密的 URL 具有时效性,过期之后就无法再被允许访问。

时间戳防盗链的 URL 通常会有两个参数一个是签名字符串,一个是过期时间。签名字符串一般是通过对用户设定的加密字符串、请求路径、过期时间通过 MD5 哈希算法取哈希的方式获得。

时间戳防盗链 URL 示例:

http://cdn.wangsu.com/4/123.mp3?wsSecret=79aead3bd7b5db4adeffb93a010298b5&wsTime=1601026312

wsSecret :签名字符串。

wsTime: 过期时间。

e8ea6ae6-50fa-11ed-a3b6-dac502259ad0.png

时间戳防盗链的实现也比较简单,并且可靠性较高,推荐使用。并且,绝大部分 CDN 服务提供商都提供了开箱即用的时间戳防盗链机制。

e909df66-50fa-11ed-a3b6-dac502259ad0.png

七牛云时间戳防盗链配置

除了 Referer 防盗链和时间戳防盗链之外,你还可以 IP 黑白名单配置、IP 访问限频配置等机制来防盗刷。

总结

CDN 就是将静态资源分发到多个不同的地方以实现就近访问,进而加快静态资源的访问速度,减轻服务器以及带宽的负担。

基于成本、稳定性和易用性考虑,建议直接选择专业的云厂商(比如阿里云、腾讯云、华为云、青云)或者 CDN 厂商(比如网宿、蓝汛)提供的开箱即用的 CDN 服务。

GSLB (Global Server Load Balance,全局负载均衡)是 CDN 的大脑,负责多个 CDN 节点之间相互协作,最常用的是基于 DNS 的 GSLB。CDN 会通过 GSLB 找到最合适的 CDN 节点。

为了防止静态资源被盗用,我们可以利用Referer 防盗链+时间戳防盗链。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8116

    浏览量

    82509
  • CDN
    CDN
    +关注

    关注

    0

    文章

    287

    浏览量

    28502

原文标题:美团二面:什么是 CDN ?CDN 工作原理是什么?

文章出处:【微信号:cxuangoodjob,微信公众号:程序员cxuan】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CDN加速原理详解

    一、CDN加速是什么意思 CDN是Content Delivery Network)英文首字母的缩写,中文翻译为内容分发网络,由于CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为
    的头像 发表于 01-12 16:06 458次阅读
    <b class='flag-5'>CDN</b>加速原理详解

    了解Goooood®狗帝融合CDN: 类型和部署选项

    Goooood®狗帝融合CDN为企业提供多种部署选项,以优化内容交付并增强用户体验。无论是面向全球受众,针对特定区域,还是提供无缝的游戏体验,Goooood®狗帝融合CDN都提供了正确的解决方案
    的头像 发表于 01-08 14:34 152次阅读

    恒讯科技分析:香港服务器CDN配置教程

    配置香港服务器的CDN(内容分发网络)涉及多个步骤,主要目标是通过分发内容至全球各个节点,提高网站性能和降低加载时间。下面是一个简要的香港服务器CDN配置教程: 步骤1:选择CDN服务提供商 选择
    的头像 发表于 12-14 17:25 254次阅读

    CDN运作原理 CDN的特点总结

    CDN运作原理 本地缓存的数据,通过key-value 的形式,将url 和本地缓存进行映射,存储结构与 Map相似,采用 hash+链表形式进行缓存。 CDN命中率 衡量我们CDN服务质量
    的头像 发表于 10-09 16:12 393次阅读
    <b class='flag-5'>CDN</b>运作原理 <b class='flag-5'>CDN</b>的特点总结

    cdn是什么意思 CDN的组成

    定。 CDN工作原理就是将源站的资源缓存CDN各个节点上,当请求命中了某个节点的资源缓存时,立即返回客户端,避免每个请求的资源都通过源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验。 举一个生活中的例子,我
    的头像 发表于 10-09 15:55 856次阅读
    <b class='flag-5'>cdn</b>是什么意思 <b class='flag-5'>CDN</b>的组成

    CDN工作原理和访问过程

    CDN工作原理 接入CDN 在接入CDN前,当我们访问某个域名,直接拿到第一个真实服务器的IP地址,整个流程如下(图有点简陋) image.png 当我们需要加速网站时,通过向运营商注
    的头像 发表于 10-09 15:41 549次阅读
    <b class='flag-5'>CDN</b><b class='flag-5'>工作原理</b>和访问过程

    从传统CDN到融合CDN的进化:技术之路

    在数字化时代,内容分发网络(CDN)已经从一个辅助工具逐渐演变为确保网站性能和用户体验的核心组件。随着技术的进步,我们已经从传统的CDN迈向了融合CDN的新时代。本文将深入探讨这一进化的历程
    的头像 发表于 09-24 08:34 1172次阅读
    从传统<b class='flag-5'>CDN</b>到融合<b class='flag-5'>CDN</b>的进化:技术之路

    从传统CDN到融合CDN的进化:技术之路

    在数字化时代,内容分发网络(CDN)已经从一个辅助工具逐渐演变为确保网站性能和用户体验的核心组件。随着技术的进步,我们已经从传统的CDN迈向了融合CDN的新时代。本文将深入探讨这一进化的历程。 01
    的头像 发表于 09-18 15:05 232次阅读

    为什么要使用融合CDN,单CDN与多CDN之间的差异对比

    CDN是现代互联网服务的重要组成部分,它CDN可帮助内容提供者高速交付内容,不同的服务器部署在全球不同的数据中心,并在它们之间共享相同的网络路径。随着企业意识到CDN的重要性,越来越多的企业正在
    的头像 发表于 08-10 08:36 513次阅读
    为什么要使用融合<b class='flag-5'>CDN</b>,单<b class='flag-5'>CDN</b>与多<b class='flag-5'>CDN</b>之间的差异对比

    海外cdn加速有用吗?

    CDN是一个策略性部署的整体系统,能够帮助用户解决分布式存储、负载均衡、网络请求的重定向和内容管理等问题,CDN代表了一种基于质量与秩序的网络服务模式。1.想要完成CDN对网站的加速服务,先要
    的头像 发表于 07-31 17:39 377次阅读
    海外<b class='flag-5'>cdn</b>加速有用吗?

    CDN与融合CDN之间的对比:优缺点及注意事项

    CDN是现代互联网服务的重要组成部分,它CDN可帮助内容提供者高速交付内容,不同的服务器部署在全球不同的数据中心,并在它们之间共享相同的网络路径。随着企业意识到CDN的重要性,越来越多的企业正在
    的头像 发表于 07-31 17:39 322次阅读
    单<b class='flag-5'>CDN</b>与融合<b class='flag-5'>CDN</b>之间的对比:优缺点及注意事项

    企业应该选择融合CDN还是单CDN

    哪些情况适合单CDN或融合CDN仅针对特定地理位置的公司可以使用单一CDN解决方案,建议网站内容在全球分发的优先选择融合CDN来进行加速。如果您的网站内容/应用程序大多是静态的,那么单
    的头像 发表于 07-31 17:39 286次阅读
    企业应该选择融合<b class='flag-5'>CDN</b>还是单<b class='flag-5'>CDN</b>

    火伞云融合CDN跟传统CDN的区别

    提到CDN相信很多人都不陌生,但是说起火伞云融合CDN大家都一头雾水了吧,首先万物归根,要知道火伞云融合CDN到底是什么得先从了解CDN是什么开始,
    的头像 发表于 07-31 17:37 495次阅读
    火伞云融合<b class='flag-5'>CDN</b>跟传统<b class='flag-5'>CDN</b>的区别

    什么是融合CDN?融合CDN的优势和常见的调度模式有哪些?

    什么是融合CDN?为了理解什么是融合CDN,我们先了解什么是CDNCDN是一个地理分布的边缘服务器网络,其目标是提供更快、可靠的互联网内容交付。C
    的头像 发表于 07-31 17:36 410次阅读
    什么是融合<b class='flag-5'>CDN</b>?融合<b class='flag-5'>CDN</b>的优势和常见的调度模式有哪些?

    CDN加速服务的工作原理

    CDN(内容分发网络)加速服务是一种用于提高网站和应用性能的技术,通过将内容分发到全球多个节点,使用户可以从就近的节点获取所需内容,从而实现更快的加载速度和更稳定的访问体验。下面Ogcloud为您详细介绍CDN加速服务的工作原理
    的头像 发表于 07-31 14:12 318次阅读