OSS 和 CDN 的差别与使用场景

如果你像我一样从七牛云开始接触 CDN,就很可能先入为主地认为 OSS 和 CDN 是一个东西。我们先讨论七牛 CDN 的工作方式,搞懂了这个就不难理解 OSS 和 CDN 的差别。

如果你没有受到七牛云的“荼毒”,也可以跳过这一部分。

七牛 CDN 的工作方式

在七牛的官网可以看到两个主打产品,一个是对象存储,一个是融合 CDN。既然是分开的产品,那就说明它们可以分开使用,针对的问题也不同。

网上常说的“用七牛 CDN 加速”,其实是这两个产品的混合应用。初学者跟着网上的教程或者插件操作,只知道怎么用而不知道原理,因此无法分清两者的差别,把它们混为一谈。

多数七牛用户的配置结构是这样的:

七牛CDN与对象存储的工作流程

当访客访问网页时,动态网页的处理在服务器中完成,而静态资源(比如图片、CSS、JS、字体)需要从对象存储中获取。如果使用了CDN,那么CDN将从对象存储中获取并缓存静态资源。网页发出请求后,离访客最近的CDN直接提供资源;如果资源还未在CDN中缓存,那么CDN就会把请求指向对象存储,最终获取到对象存储中的资源。

事实上,根据业务需求的不同,上图中的 CDN 或 对象存储并不是必须的组成部分,组合方式既可以是源站+CDN,也可以源站+对象存储。

OSS 和 CDN的差别

通过对七牛加速功能的分析可以看出,对象存储与 CDN 不一样,而 OSS 就是阿里云的对象存储存储产品。除了 七牛云存储阿里云OSS,常见的对象存储产品还有——

每个厂商的对象存储服务都可能有不同的名称,其实它们是同一个东西,只不过底层的技术可能不同而已。CDN 就不同了,几乎所有厂商的 CDN 产品都叫 CDN,因此大家一看就明白它是做什么的。

OSS 是做存储的,CDN 是做内容加速的。打个比方,OSS 是硬盘,用来存数据,那么 CDN 就是宽带,用来传输数据。如果 OSS 是一,那么 CDN 就是多。OSS 有它所在的数据中心,是一个容量巨大的硬盘,里面的内容只存在于那个数据中心;而 CDN 在世界各地都有缓存节点,内容被分别存储在世界各地,当访客浏览网页时,最近的缓存节点就为 Ta 提供数据。

OSS 和 CDN 能否相互替代?不能。下面我们以使用场景来对比解释。

使用场景

假设这样一个场景——

我用阿里云 ECS 建了一个视频网站,我写的代码简洁高效,用入门级配置的 ECS 就能支持几十上百万的访问量。

但是随着用户的增加,视频越来越多,我的 ECS 硬盘容量开始捉襟见肘。此时我应该升级硬盘容量吗?不,升级 ECS 的硬盘容量是性价比极低的方法,正确的选择是 OSS。将视频网站程序与用户上传的视频资源分离,视频保存在便宜大容量的 OSS 中,ECS 只需要负责运行程序。此时我们的网站就像是外挂了一个无限容量的巨大硬盘,而且这个“硬盘”对网站的运行不会产生影响。

存储问题解决了,但是我接到用户反馈说视频加载很慢。原来,我的 OSS 区域在杭州,而我的访客分布在全国各地。怎么才能让远方的访客获得更快的加载速度呢?我应该在多个区域创建 OSS吗?不,那样一来成本高,而来数据量庞大,跨区域间无安全拷贝和实时同步是不太可能的,最好的解决方法是使用 CDN 加速。CDN 将视频缓存在全国各地的节点上,用户获取到的是当地节点上的文件,速度自然就飞快起来了。

通过以上解释和场景模拟,相信你已经理解对象存储 OSS 和 CDN 的作用、组合方式。在实际应用中,它们并非必须同时使用。例如个人博客,本身的存储量不大,40GB 甚至 24GB 容量都绰绰有余,如果要实现加速功能,那么只需要 ECS + CDN 就行了。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
支付宝扫码打赏微信打赏

喜欢本文吗?请我喝杯雪碧吧~~

5 1 投票
文章评分
guest
2 评论
最新
最早 评分最多
Inline Feedbacks
查看所有评论