由于工作性质原因,有幸参与了本人所在公司采购云存储的整个过程,对于云计算厂商产品现状有一定的实践了解。选型结束后,抽空整理了一些测试方法和数据,希望对大家有所帮助,能节省点时间就坠吼了。
【背景】
因为业务扩张,需要对大量的二进制文件做存储,有视频文件、图片文件、文本文件和一些外置的,上云是趋势,我们决定把最经常读写的数据搬上云,也就所谓的热数据。选了5个主流的厂商:AWS(中国)的S3、Azure(中国)的blob存储(后面因为Azure的上行和下行流量都需要花钱,整体费用太高,不测了)、阿里云OSS、腾讯云的COS、金山云的KS3等。
按照节省成本、高性能、高稳定性、以及足够安全、售后服务要及时等几个业务需求部门提来的维度来进行测。
1、 价格(通过官网价格来比较,以公司目前的体量还没议价权)
2、 性能(通过脚本调用API接口来测试性能)
3、 稳定性(跑48小时来看看稳定性情况)
4、 售后服务(看看服务承诺、SLA等)
5、 安全考虑(数据存储是否安全是否合规等)
为了缩短篇幅,简单的分成2部分资料。第一期:性能、价格、稳定性,第二期:主要考虑厂商售前售后服务,以及厂商对数据的安全处理等。
【声明】
这个选型主要是考虑到公司的需求,最后选的是行业老大阿里云。但不同的公司需求并不一致,所以大家可以重点看下选型的方式,至于测试的数据,权做参考吧。
价格对比
价格主要是官网价格和实际折扣价,因为体量大小最终决定了价格,所以这里只通过官网来考察。云存储计费非常复杂,有存储空间费用、有下载收费、有CDN费用、有请求次数费用、不同的请求类型收费还一样。还有不少增值服务的费用等等,看着眼花缭乱,其实主要是分这三大块:存储、流量下载、接口调用:
存储费用就是你用多少空间就花多少钱,流量费用就是你上传到厂商那边内容在用户下载时候收流量费,接口调用费用主要是客户发起了多少请求,一般是按照GET请求和PUT/DELETE请求两种,计费单价不一样。
除了上面三种基本费,很多云厂商还有增值服务,例如图片水印处理、视频转码处理、CDN分发处理等,这些服务是单独收费。
我们是在2016年11月份的时候做的选型,这里把当时的价格都贴出来:
存储空间(单价):
存储空间单价解释:从单价上来看阿里云和腾讯云的价格一样,Azure次之,AWS单价非常高。
流量下载(单价):
流量下载单价解释:从单价上看,阿里云的忙时的单价是最低的,金山云次之,AWS依然居高不下。
请求次数(单价)
如果光看以上各个部分的单价,大家还是没有太多感性认识,现在我列举三个不同规模的客户场景来评估不同厂商的总价格的对比,大家就会有个立体的感觉。
小、中、大规模实际客户使用成本对比:
小规模(50G、10G、1万次)是指:每月占用的存储空间是50G、每月的下载流量10G,每天的请求次数1万次。
中规模(1T、50G、5万次)是指:每月占用的存储空间是1T、每月的下载流量50G,每天的请求次数5万次。
大规模(5T、500G、10万次)是指:每月占用的存储空间是5T、每月的下载流量500G,每天的请求次数10万次。
表格这种东西,做的人脑子门儿清,看得人一头雾水。所以还是做成这个对比图吧。
价格对比图详细解读:
小规模用户,腾讯云因为有免费的50G空间,价格占优势。在中、大规模的阶段,阿里云的价格优势开始凸出。考虑到包月计费之类的模式,费用还有空间。
综合价格排名:
阿里云 <>金山云 <>腾讯云 <>(中国) <>(中国)。
性能对比
通过各个厂商的SDK,用python脚本跑性能,初步选定的请求是文件上传、文件下载、文件删除。整体测试流程图如下:
第一阶段:测试机器的选择(选中立的厂商,走外网测试)
说实话,在真实测试之前也上网找过类似的评测。发现大多没说清楚测试机器的位置,其实内行的人会明白这是一个非常关键的点,假设在腾讯云上购买了云主机来测试,那么腾讯的存储数据就会非常好看,原因是如果网络自适应,发出的请求多半会走的内网传输,那还比什么?
一开始我们测出来的数据怎么也无法复现网上热帖中的结果。后来一琢磨,发现了这层关系。真叫软文害人不浅。
既然要为公司负责到底,那么选型最好模拟最真实的场景。我们组讨论后最后选定华为云(华北区)的弹性云服务器高性能ECS(4核16G),一来保证走第三方服务器可以排除内网问题,保证测试公正性,二来华为云这次不在我们入选的厂商中,避嫌。
在测试运行过程中,为了让测试机器上各种资源不成为瓶颈,选用的带宽是按流量计费,ECS默认带宽最大上限是100MB,在压力测试过程中实时监控测试机器的资源,让测试机器的CPU、内存、磁盘IO的使用率控制在65%以下,带宽使用率控制在80%以下,这样能尽可能减小因为测试机器性能瓶颈导致测试结果出现偏差,基于这样的背景进行了多轮的性能测试,最终获取到性能和稳定性测试结果以此来进行对比。
第二阶段:测试数据的准备
一个目录下是否有基础数据,数据量的大小对性能有不小的影响。根据公司的业务数据特点:大量小文件(10K-1M),少量中等文件(2M-10M)和部分大文件(10M-300M),数量比例大致在小:中:大=6:3:1,在后续的性能测试选取了3个尺寸的文件大小50K、2M、50M来压测,在某目录下内的预埋100万4个不同大小的文件,整个基础测试数据保持400W左右。
第三阶段:测试结果阶段
1. 文件下载请求(download):
文件下载性能图表对比讲解:
在小文件的下载的请求里,阿里云的响应时间最短,AWS次之,这样的结果完全出乎预料,我印象中,腾讯云会跟阿里云性能差距不大,从实测结果看来两个厂商还是有不小的差距。
2. 文件上传请求(upload):
文件上传性能图表对比讲解:
从三个不同尺寸的结果看来, AWS和阿里云在第一阵营,性能数据相差不远,腾讯云和金山云基本是第二阵营,和第一阵营的结果比起来有30%以上的差距。
3. 文件删除请求(delete):
文件删除性能图表对比讲解:
从文件删除性能对比来看,腾讯云的删除时间跟文件大小成正比,阿里云、AWS、金山云的响应时间基本一致,腾讯云有点跟不上。
稳定性对比
我公司的业务特点是要求长期在线随时响应,所以对稳定性要求高。我们把长期负载下依然能优雅的跑任务作为重点观测,因此在短时性能测试后,还做了48小时稳定性压力测试。结果看下图:
稳定性测试结果
48小时稳定性图表对比讲解:
综述
在综述价格、性能、性价比之后,相信大家大致了解选型的几个要点。至于结果,我给老板汇报的时候用他能懂的话来说,就是第一阵营:阿里云、AWS,第二阵营:金山云、腾讯云。
综合盘点下来,AWS性能中规中矩,但稳定性最好,价格没有优势。阿里云综合排名下来是首选。
真实的选型过程当然还要更加复杂,比如说得考虑到节点、合规。如果大家感兴趣,后边还可以说说在服务方面的考量。
注:本篇文章是网友投稿,不代表本站观点。作者是国内某助手软件工程师,如有需要请联系作者StanW87@gmail.com
联系客服