CDN和OSS

CDN

简介

CDN全程为Content delivery network ,翻译过来的意思是,内容分发网络

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

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

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

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

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

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

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

工作原理

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

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

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

命中率和回源率是衡量CDN服务质量的俩个指标,命中率越高越好,回源率越低越好

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

如何找到合适的CDN节点

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

  1. 浏览器向DNS服务器发送域名请求
  2. DNS服务器向根据CNAME(Canonical Name)别名记录向GSLB发送请求
  3. GSLB返回性能最高(通常距离请求地址最近)的CDN节点(边缘服务,真正花奴才能内容的地方)的地址给浏览器
  4. 浏览器直接访问指定的CDN节点

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

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

如何防止资源被盗刷?

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

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

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

总结

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

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

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

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

OSS

简介

「OSS」的英文全称是Object Storage Service,翻译成中文就是「对象存储服务」,官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。

白话文解释就是将系统所要用的文件上传到云硬盘上,该云硬盘提供了文件下载、上传等一列服务,这样的服务以及技术可以统称为OSS,业内提供OSS服务的厂商很多,知名常用且成规模的蓝队云等。

好处

简单的HTTP API,包含所有主要操作系统和编程语言的客户端。只需支付使用的费用。对发布静态资产的内置支持允许您使用更少的服务器。一些对象存储提供内置的CDN集成,可以缓存资产以加快页面加载速度。可选的版本控制允许您检索旧版本的对象以从意外数据覆盖中恢复。可以轻松扩展对象存储服务,而无需额外的资源或体系结构更改。不需要支持硬盘驱动器和RAID阵列,因为所有这些都由存储提供商处理。使用数据对象存储元数据片段的能力将简化应用程序体系结构。

缺点

此类存储库将无法维护传统数据库。对象存储不允许按片段更改数据。只能修改整个对象,这会影响性能。例如,在文件系统中,您可以轻松地在日志末尾添加一行。在对象存储系统中,为此需要还原对象,添加新行并将整个对象写回。因此,这种存储不适用于数据经常变化的应用。操作系统无法像常规磁盘一样安装对象存储。有几个客户端和适配器,但一般来说,使用和浏览对象存储并不像在文件浏览器中使用目录那么容易。

总而言之,OSS非常适合存储静态资源,例如,用于存储用户定义的内容:图像和电影,存储备份文件和日志。

区别

1.oss的核心是存储以及计算能力,而cdn的核心是分发。

2.oss是用来存放静态资源,比如图片、js文件等资源,而cdn是用来将oss里面的文件进行分发。

3.oss里面的文件会缓存到cdn的节点上,但cdn本身不会给用户提供直接操作存储的入口。

Last modification:January 31, 2023
如果觉得我的文章对你有用,请随意赞赏