本文为转载文章,可供服务器供应商的选择参考。
【原文链接: https://www.sohu.com/a/118319572_407895】
以下为原文:
约一年前,我在某国外云厂商上部署了自己的第一个网站,从此成为一名云计算用户。由于国内用户访问不便,前段时间我将网站迁回了国内,并记录下了大致的迁移过程。其中开篇简要说明了最终选择的国内云服务商(腾讯云),但并没有对背后的具体原因做深入的解释。
本文打算从性能评测和价格等角度,做一下说明。
0.0.1. 云计算市场争夺
阿里云作为名副其实的国内业界第一,名声非常大,不过最近IT之家的事闹出来之后,我有点庆幸最终没有选择它。腾讯云算是业界老二,而且有着腾讯这个强大的靠山,云服务产品的种类和质量都不错。
上个月阿里云在云栖大会上宣布降价,昨天腾讯云方面也推出了全线降价活动,对包年包月产品均提供了大幅度的降价优惠。阿里和腾讯在云计算领域之争继续上演,双方都想通过价格优势带来用户的高增长,抢夺市场份额。
这对于云计算用户来说自然是一件好事,但是如果让价格完全左右企业或个人用户的购买决策的话,那么最终很可能会出现已购产品无法满足需求,从而不得不被迫迁移的情况。笔者的观点很简单,在考虑价格因素之前,应该先从产品性能、服务等多方面进行评估。
在选择自己的云服务器之前,我也在腾讯云和阿里云之间犹豫过,并对两家的产品做过一些简单的对比。下文中会简要分享一下对比结果。
在对比每一款产品时,本文先通过一系列的标准化测试比较产品的性能,然后再结合产品的最新优惠价格因素进行评价。至于两家的产品到底谁的性能更好、性价比更高,一切还是要用数据说话。
本文采用的测试工具和方法介绍,请查看配套文章:云计算产品性能测试指南。阅读期间,如果你觉得具体对比过程太长,可以直接跳到本文结语部分查看对比结论。
0.0.2. 选择对比产品
腾讯云和阿里云都是典型的 IaaS 服务商,产品种类繁多。限于时间和成本,没办法对所有产品进行一一对比,只能有选择性地比较一些基础产品和服务。
根据AWS Web 应用参考架构,一个高可用、可伸缩的网站至少需要使用以下云计算资源:云服务器、云数据库、对象存储服务、负载均衡、内容分发等。因此我们在本文中主要对比云服务器、云数据库和对象存储这三个比较基础的产品。
网站参考架构图:以 AWS 服务为例。
对比产品的英文简称
下文在谈到对应产品时,将使用其简称表示。
0.0.3. 云服务器对比
云服务器是所有云计算服务商提供的最基础产品。厂商一般会根据分配的资源划分云服务器的级别和规格。但是由于采用的基础硬件、架构和调优技术存在差别,类似配置的云服务器之间也可能有较大的性能差异。
如果想了解并比较不同厂商云服务器的差异,最好的方式就是运行基准测试。
0.0.3.1. 性能测试准备
在开始测试之前,我们先在两家创建相同配置的两台云服务器,尽量确保测试结果之间具备可比性。付费方法均采用按量计费,使用包年包月服务器进行测试的成本较高。
腾讯云和阿里云针对按量计费的云服务器,均要求账户内有一定的余额:腾讯云好像没有最低充值要求,充值 10 元即可;阿里云要求账户内至少有 100 元余额。
测试云服务器的具体配置如下:
这里指出一点,由于阿里云 ECS 云硬盘最小为 40G,而腾讯云 CVM 默认 Linux 系统赠送 20G,为了在后面对比二者价格时有可比性,将 CVM 的云硬盘调整为 40G。
除了系统盘默认大小不同外,测试云服务器在 CPU、内存、操作系统等方面均为同一规格的配置。这个规格的配置也是中小型网站部署的推荐配置,应该能够满足大部分用户的需求。
0.0.3.2. 性能测试过程
由于测试的流程比较长,在本文中只简要介绍下所使用的工具及对应关注的指标。具体的测试操作步骤,我会在云计算产品性能测试指南中介绍。
在测试云服务器之前,我参考了许多相关评测文章,最终决定使用如下工具和指标:
有关其中所使用工具和指标的具体说明,请移步到这里:云计算产品性能测试指南。
0.0.3.3. 性能测试结果
GeekBench 会将测试结果上传到自己的网站,本文测试结果的访问地址如下:
- CVM
- ECS
各项指标结果汇总如下:
云服务器性能测试结果:腾讯云、阿里云
从数据来看,腾讯云的 CVM 在 UnixBench 和 GeekBench 两个综合性测试工具下的得分都高于阿里云的 ECS。
UnixBench 和 GeekBench 两个综合性测试工具
CPU 延迟和内存性能方面,ECS 略胜一筹,但是优势不大。在磁盘 I/O 性能上,阿里云的表现接近在启动实例配置时所介绍的 500 IOPS。但是与腾讯云相比逊色不少,CVM 的磁盘随机读/写的 IOPS (每秒的输入输出量,或读写次数)均在 4000 左右。
0.0.3.3.1. 磁盘 I/O 性能
其实看到二者在磁盘 I/O 性能上差距居然这么大,笔者刚开始很诧异,还以为测试命令输入有误,不过反复测试确认之后,可以证实这个数据并没有错。同时也向客服方面了解,得到的回复是:CVM 的磁盘 I/O 最大性能指标的确可以达到 4000,但是并不承诺一直保持该性能。这点可以理解,随着租户的增加,最大性能指标很有可能会逐步下降。
最后要注意的是,虽然我们使用了知名的基准测试工具,但是具体的数据可能并不能精确地说明云服务器的性能。因为云服务器的性能和相邻租户使用情况是相关的,根据其他租户的使用情况而不同,因此以上数据仅作参考使用。
0.0.3.3.2. 考虑价格因素
最后我们来加入价格因素。阿里云此前在云栖大会上宣布云产品大幅降价,近期腾讯云方面也趁着双十一宣布了一轮降价,那么我们结合上面的性能测试结果,来看看降价之后两家的性价比如何。
上图中的价格信息取自 11 月 4 日创建实例时显示的价格。
从包月费用来看,腾讯云 CVM 比 ECS 要贵那么一丁点,不过考虑到它的性能评分就会觉得贵的物超所值了。但是从之后的二、三年优惠价来看,CVM 的费用反而要低于 ECS 相应期限的成本了。如果两家的降价幅度相同的话,那价格应该是阿里云一直便宜一些才对啊?
确实,背后的原因就是在于二者的降价幅度不同:阿里云是中国区域实例最高 3 年 5 折,带宽和系统盘并没有这么高的折扣,只有 8.5 折。
阿里云折扣截图
相比之下,CVM 是真正的全线降价,三年实例、带宽和系统盘费用都是 5 折优惠。
因此,这段时间内购买腾讯云 CVM 的性价比是要高于阿里云 ECS的,尤其是购满 2-3 年的话。
0.0.4. 云数据库对比
我们接着对比两家的基础云数据库:CDB 和 RDS。
目前虚拟化技术已经取得很大的进展,可以将物理机虚拟化为多个云服务器,而且能做到总体性能的损耗最小。因此,网站的性能差、响应慢,可能不是你的应用代码写的不好,瓶颈很可能就在于云数据库的性能。因此,选择云服务商的云数据库性能,也是决定购买决策的一个重要因素。
由于 MySQL 是网络上使用最为普遍的数据库,腾讯云和阿里云两家基础的数据库产品也都是基于 MySQL 的,因此在这项评测上我们选择 MySQL,版本为 5.6。
0.0.4.1. 测试准备工作
两家的云数据库目前只提供一种配置类型,分别是高 IO 版(CDB)和双机高可用版(RDS)。因此在这项测试中,使用一组完全相同配置的云数据库是不可能,只能转而使用同价位级别的服务器。
基于上述原因,我们分别在腾讯云和阿里云创建最低配版的云数据库(CDB 和 RDS)。具体配置如下表所示:
从官方划分的类型和内存大小来看,这应该是一组可比较的实例。另外,为了降低测试时网络的影响,我们继续使用对比云服务器时创建的实例,来运行测试代码。
0.0.4.2. 测试过程
MySQL 云数据库有许多性能测试工具,如自带的 mysqlap。本文所选择的是 sysbench。
Sysbench 是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。还可以用来测试 CPU 性能、磁盘 I/O 性能等指标。我们用到的是其提供的 OLTP 基准测试,默认支持 MySQL 数据库。
Sysbench 的安装及测试方法请看云计算产品性能测试指南的云数据库部分。本文中执行了随机读写、随机只读两种测试。
OLTP 测试输出结果如下图所示:
腾讯云 CDB:sysbench 随机只读测试结果
我们需要关注的数据包括测试完成的事务总数,即图中的 read/write requests ,表示数据库的吞吐量;以及平均请求时间,即图中 per-request 数据下的 avg 对应的值,表示数据库请求的延迟。
0.0.4.3. 性能测试结果
这里只用到了一种测试工具,而且测试的类型也不多,因此很快我们就可以得到测试结果,将其中我们需要的数据提取出来,可以得到下图中的对比数据。
云数据库性能测试结果
从结果可以看出,腾讯云 CDB 的数据库读写请求吞吐量相比 RDS 来说高很多,是后者的约 6-7 倍左右,请求的响应时间也非常快,在 10ms 以内。高 I/O 版本的表现的确强劲。
0.0.4.3.1. 考虑价格因素
最后我们考虑二者的价格因素。
两家最新的优惠价格对比如下:
云数据库价格对比
以上价格信息取自 11 月 4 日创建实例时显示的价格,区域分别为:CDB 广州,RDS 华南1
至于另一个费用来源——网络流量费用,如果使用两家对应的云服务器的话,与云数据库之间就是内网流量,应该都是免费的。所以流量费用问题可以忽略。
从上图我们可以得出,两家在包月价格上差异不大,但是就此次降价幅度来看,腾讯云 CDB 的优惠非常之高:二、三年的优惠价(4折、3折)是 RDS 的一半;一年、二年和三年购买期限处在同一个价位段,而且买两年的价格比一年还低。
如果 Web 应用要求大量快速的数据库读取操作,那么在购买期限为二、三年的情况下,配置两台 CDB 高 IO 版也比选择 RDS 的性价比要高。
如果数据库请求在 RDS 测试结果之内,使用期限也不长,那么可以考虑使用 RDS。
另外提示一点,虽然说 CDB 的版本介绍为高 I/O 版,但是据官方的产品文档,每一个 CDB 实例都做了实时双机热备,因此在可用性方面的表现应该也不会差太多(这里我们没有对此进行测试)。
0.0.5. 对象存储服务对比
到最后一个产品了。
对象存储服务的对比有点麻烦,没有比较好用的基准测试工具。在准备测试之前,我发现 Intel 公司开源了一个专门测试云对象存储的工具,叫做 COSBench,不过可惜的是只支持 Amazon S3 等国外云厂商的服务,不支持腾讯云和阿里云。当然好像可以自己实现对应的适配器,但是对于本文这个较为简单的评测来说,有点太过麻烦了。
因此,在对比对象存储服务时,我使用两家提供的 Python SDK,编写了测试脚本来统计上传、下载和删除等三个任务的用时。注意,这里并没有测试高并发的情况。
0.0.5.1. 性能测试方法
为了控制网络环境对测试结果的影响,我在腾讯云和阿里云各自同区域的云服务器上进行测试,这样不仅测试起来会比较方便,而且能确保测试结果准确有效。我在两家创建的对象存储 Bucket 都是位于华南区的,因此在相应区域分别创建了一台云服务器实例。
同时,为了尽量模拟实际用户的使用场景,我们选择 50KB、2MB、50MB 三种级别的文件进行测试。一般网络图片的大小在 50K - 2MB 左右,通过这两个级别文件可以测试图片数据存储的效率。另外 50MB 级别用于测试大文件存储性能。
具体来说,我们通过 dd 命令生成:
- 10000 个 50KB 文件
- 1000 个 20MB 文件
- 100 个 50MB 文件
测试时统计文件上传/下载/删除用时等指标,取平均值(单位毫秒)。在测试小文件下载用时时,并没有将文件保存到磁盘,避免了磁盘成为性能瓶颈。
0.0.5.2. 性能测试结果
由于测试文件数量不少,整个测试脚本跑下来可能要一个多小时。最终针对 COS 和 OSS 的测试结果(均为单个文件平均值)如下。
0.0.5.2.1. 50KB 小文件
在 50KB 小文件这个类别中,阿里云 OSS 的上传、删除用时表现不错,小文件下载用时方面腾讯云 COS 用时较少。
0.0.5.2.2. 2MB 小文件
随着文件大小的增加,腾讯云 COS 在上传、下载用时这两项指标上开始超越 OSS,差距以倍数计。不过 OSS 在删除用时上仍然保持在 10ms 左右。
0.0.5.2.3. 50MB 大文件
50MB 大文件
由于 50MB 文件的上传、下载、删除用时之间级别相差较大,因此我在绘制图表时将纵轴改为了对数可读,方便阅读。本文测试的实际数据如下表所示:
50MB 大文件本文测试的实际数据
在上传大文件时,OSS 与 COS 之间的性能差异显得尤为突出。
0.0.5.2.4. 综合来看:
- 阿里云 OSS 在处理文件上传时,随着文件大小增加,性能在逐步下降;下载用时与 COS 相差不大;文件删除用时均优于 COS,不过文件越大,用时会有对应增加。
- 腾讯云 COS 在文件上传上的性能比较突出,尤其是大文件;下载用时表现也不错;文件删除虽然总体不及 OSS,但每类文件删除用时均保持在相同的水平。
如果将三个指标结合在一起,腾讯云 COS 的表现要好于阿里云 OSS。
0.0.5.2.5. 考虑价格因素
我们接下来看价格因素,以一个想象中的网站示例来对比。
假设一个网站的存储数据有 1.5 TB(图片、音频、视频),每月产生流量 600 GB,月 PV 大约 300 万,同时每月读请求 600 万次,写请求 30 万次(平均日请求 21 万)。
我们使用上面的网站数据,通过官方提供的价格计算器(COS、OSS)来计算使用 OSS 和 COS 的价格。
由于腾讯云 COS 目前只提供按量计费模式,因此对比的计费方式均选择为按量计费。
结果如所示:
0.0.5.2.5.1. 阿里云 OSS 按量计费价格(区域选择为华南)
阿里云 OSS 按量计费价格(区域选择为华南):616.7元/月。
0.0.5.2.5.2. 腾讯云 COS 按量计费价格
腾讯云 COS 按量计费价格:593.4元/月。
上面在计算价格时,并没有加入 CDN 因素。不过两家在介绍产品时都提到了,如果设置 CDN 加速或回源,价格会更低。
腾讯云在上面的计费对比中胜出的原因,可能与其推出的免费额度有关。目前,每个 COS 用户都有每月 50G 的免费存储空间,10G 的免费流量,以及 100 万次免费读请求和 10 万次免费写请求。阿里云在 2015 年时曾推出过免费 OSS 额度,但是目前已经没有了。
0.0.6. 结语
至此,我们已经完成了对腾讯云和阿里云三个基础性云计算产品的评测对比,兼顾了性能指标和价格因素。具体的评测结果总结如下:
0.0.6.1. 云服务器
同等配置下,腾讯云 CVM 的整体性能高出阿里云 ECS 不少;CVM 的包月费用略高于 ECS (3块钱),但是此次降价幅度比 ECS 更大,一年期以上购买 CVM 的性价比更高。
0.0.6.2. 云数据库
由于二者类别不同,测试了各自最低等级配置的 CDB 和 RDS,CDB 在吞吐量和延迟两项性能指标上均大幅领先;同时降价力度也大于 RDS,因此可以说 CDB 的性价比远高于 RDS。
0.0.6.3. 对象存储
在大小文件的上传、下载和删除几项指标上,腾讯云 COS 和阿里云 OSS 各有得分,OSS 在文件删除上表现不错,但是在大文件上传上要逊色不少;COS 在各项指标上的表现都可圈可点。
因此,仅仅从这三项产品的性价比来看,腾讯云这次降价进一步增加了其产品的优势。如果让我在这场价格战下选择云计算服务商的话,我会选择腾讯云。而这也是我之前迁移网站时所做的选择。
不过话又说回来,要评估一家云计算厂商,除了性能和价格之外,还要考虑可用性、可靠性等其他诸多指标(各家之间的差异可能不大)。对后者进行评测涉及的操作更为复杂,并不是本文所能涵盖的。而我上面所做的选择,也主要是基于性能和价格两个因素来考虑的。
由于时间有限,无法将国内其他云计算厂商的产品一并加入测试,欢迎有兴趣的朋友按照本文所介绍方法对自己所使用的云计算产品进行测试,并将结果分享给我,方便大家参考。也希望本文能够帮助大家选购到满意的云计算产品。
本文和配套评测指南中如有任何错误,还请大家指正。
0.0.7. 参考资料
- 2015年度PK,云存储(对象存储)性价比对比评测
- 论云存储服务性能评测的正确姿势
- 国内公有云对比(2)性能篇
- How to Benchmark Cloud Servers
- Cloud Benchmark at Slush 2015
- Benchmarking cloud servers: A Cloud Computing Insider’s Guide
- How to Benchmark Disk I/O
- Benchmark MySQL Server Performance with Sysbenc
- Real-world benchmarking of cloud storage providers