对象存储&CDN多云模型成本分析及最佳实践

举报
Kaptain 发表于 2019/06/24 22:37:04 2019/06/24
【摘要】 在互联网场景中,对象存储和CDN是紧密相连组合使用的一对服务,鉴于很多客户使用了多家CDN厂商甚至使用了多家云存储,本文针对单云模型和多云模型的成本构成进行详细分析,并给出建议的最佳实践。

在互联网场景中,对象存储和CDN是紧密相连组合使用的一对服务,鉴于很多客户使用了多家CDN厂商甚至使用了多家云存储,本文针对单云模型和多云模型的成本构成进行详细分析,并给出建议的最佳实践。

一、单一云厂商模型

对象存储的下行流量按业界通用模式一般分为三类:内网流出流量(免费)、公网流出流量(价格最高)、回源流量(指自家CDN回源到自家对象存储的流量,在定价上有优惠,价格较低)。所以在使用同一云厂商的对象存储和CDN时,架构及成本模型如下:

001.png

其中可能产生的流量收费项包括:

1)CDN流量,为CDN产品的计费项

2)回源流量,为对象存储的计费项

3)公网流出流量(当客户端直接访问对象存储时),为对象存储的计费项

以华为云为例,CDN的流量计费为阶梯模式,在10TB以内为0.2/GBOBS的回源流量单价为0.15/GB,而OBS的公网流出流量则是闲时0.25/GB+忙时0.5/GB

一般而言,当存储在OBS中的数据需要进行互联网分发且存在多个客户端经常访问同一个文件(即存在热点文件)的场景,建议使用CDN来做分发加速,同时可降低整体的流量费用。

二、多家云厂商模型

在实际项目中,很多客户会使用多家CDN厂商+一家对象存储,或者使用多家CDN厂商+多家对象存储,那么我们举几个例子来分析下不同场景的成本模型并给出建议的最佳实践。

1. A厂商CDN+B厂商对象存储

比如使用华为云CDN+其他云对象存储,则架构及成本构成如下:

01.PNG

此时产生的流量收费项包括:

1)华为云CDN的流量,为华为云CDN的计费项

2)其他云对象存储公网流出流量(华为云CDN回源到其他云对象存储),为其他云对象存储的计费项

这种架构相比使用单云厂商的CDN和对象存储,会增加CDN回源链路的流量成本,且通过公网回源到云存储会有一定的性能下降。

2.多厂商CDN+单厂商对象存储

比如使用其他云对象存储+其他CDN+华为云CDN,则架构及成本构成如下:

02.PNG

此时产生的流量收费项包括:

1)其他云CDN的流量,为其他云CDN的计费项

2)华为云CDN的流量,为华为云CDN的计费项

3)回源流量(其他云CDN回源到其他云对象存储),为其他云对象存储的计费项

4)其他云对象存储公网流出流量(华为云CDN回源到其他云对象存储),为其他云对象存储的计费项

注意,该场景下使用华为云CDN,回源到其他云对象存储的流量在其他云看来为公网流出流量,以Ali为例官网目录价为闲时0.25/GB+忙时0.5/GB,而CDN回源流量目录价则是0.15/GB

假设业务在华为云CDN上产生了1TB月流量且为忙时流量,而回源率为10%,则因为跨云回源而额外增加的成本为 (0.5-0.15)/GB*100GB=35元,这部分费用如果用于购买OBS标准存储则可以买到353GB。这也说明如果文件总容量小于353GB时,使用两家CDN分别回源到两家对象存储是最划算的,即其他云CDN回源到其他云对象存储+华为云CDN回源到华为云OBS

3. 多厂商CDN+多厂商对象存储

一般而言使用多厂商CDN+多厂商对象存储的原因有以下几种:

1)减少使用A厂商CDN回源到B厂商对象存储所带来的额外公网流出成本

2)使用多家CDN避免单一CDN故障影响,形成多家CDN容灾架构

3)数据存储在多家云厂商,形成多云存储容灾架构

此时架构及成本构成如下:

03.PNG

1)其他云CDN流量,为其他云CDN的计费项

2)其他云对象存储回源流量,为其他云对象存储的计费项

3)华为云CDN流量,为华为云CDN的计费项

4)华为云OBS回源流量,为华为云OBS的计费项

该架构在业务上可以有几种使用模式:

1)不同的加速域名配置在不同的云厂商(如图片加速域名使用其他云、视频加速域名使用华为云)

2)同一域名在两家云厂商都进行配置而在不同的运营商/地区解析到不同云厂商的CNAME地址上(如在北京电信将域名解析到其他云CDN、在上海联通将域名解析到华为云)

3)同一域名在两家云厂商都进行配置,但只解析A厂商,当A厂商故障时将域名切换解析到B厂商

这时可极大地提高整体的业务连续性,任何一家云厂商故障对整体业务的访问影响基本在可控范围之内。但同时也带来了一个问题,如何实现多云存储之间的数据同步。

三、多云存储数据同步方案

1、应用双写

如果数据是在应用服务侧产生,或者数据在客户端产生但通过服务端将数据写入对象存储,则建议使用双写方案,架构如下:

04.PNG

此时业务应用可对接两家对象存储的SDK,将文件以同步模式或者异步模式写入两家对象存储。对象存储的上行流量免费,所以该架构不会增加任何成本。 

2、数据回源

如果数据上传逻辑不做改变,则可使用OBS的“数据回源”功能,在文件访问请求到达OBSOBS桶里没有该文件时,可通过“数据回源”将客户端请求重定向到设定的源站并异步地从源站将数据拉取到OBS存储下来,架构如下:

05.PNG

详细流程说明:

1)客户端向华为CDN发起获取文件的请求

2)华为CDN回源到华为OBS请求文件,OBS侧事先配置好数据回源,当请求的文件不存在时,会响应302重定向到配置的源站(此处为其他云对象存储)

3)华为CDN接收到OBS返回的302请求

4)OBS异步从客户配置的源站拉取文件

5)华为CDN处理302跳转到其他云对象存储侧获取数据

6)其他云对象存储响应华为CDN的文件请求

7)华为CDN将文件内容返回给客户端,当下次客户端请求同样的文件时,华为CDN直接回源到OBS获取。

需要说明的是,“数据回源”功能是被动触发式,即只有向OBS发起请求后OBS才会到设置的源站将数据拉取过来,所以当一个新文件上传到其他云对象存储后,建议业务应用程序向OBS触发一个GET请求来拉取数据(发起GET请求后可关闭连接,无需接收实体数据)。另外该架构会在其他云对象存储侧产生两份数据流量(针对同一个文件,CDN拉取一次,OBS拉取一次)。 

3Serverless触发式上传

不改变原有的上传逻辑,当文件上传到其他云对象存储后,触发函数计算服务,通过Serverless方式将文件同步到华为云OBS,架构如下:

06.PNG

该架构需要客户在其他云启用函数计算服务并部署上传文件到OBS的代码,会产生函数计算服务的费用。


注:至于存量数据的迁移方案(比如从其他云对象存储迁移存量数据到OBS),这里不做展开,可参考相关博客:

OMS数据迁移实践:https://bbs.huaweicloud.com/blogs/de1332fe788b11e9bd5a7ca23e93a891


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200