写点什么

AerospikeDB 与 Redis 性能比较:在 AWS 上的 NoSQL 基准测试

2015 年 2 月 06 日

AerospikeDB 以低延迟和高吞吐量而闻名,已经用于许多大型的、要求堪称苛刻的实时平台。而 Redis 同样以速度著称,并且也经常用作缓存。有鉴于此,Aerospike 团队近日联合拥有大数据和云架构师、AWS 社区英雄、谷歌云开发专家、微软 MVP(SQL Server)等众多头衔的 Lynn Langit 在 AWS 云的虚拟机上对 AerospikeDB 和 Redis 进行了基准测试,测试结果已经发布在 Aerospike 官方博客上。而 Lynn 也发表了题为《学到的经验——在 AWS 云上进行 NoSQL 基准测试(AerospikeDB 与 Redis)》的博文,对测试过程和结果进行了更为详细的描述。

由于 AerospikeDB 是多线程的,而 Redis 是单线程的,所以为了公平起见,需要对 Redis 进行扩展,以便它能够使用每个 AWS EC2 实例上的多个内核。在这个过程中,Lynn 发现了 AerospikeDB 和 Redis 在扩展或分片的可管理性方面的差异:

  • Redis 需要开发人员自己管理分片并提供分片算法用于在各分片之间平衡数据;而 AerospikeDB 可以自动处理相当于分片的工作;
  • 在 Redis 中,为了增加吞吐量,需要增加 Redis 分片的数量,并重构分片算法及重新平衡数据,这通常需要停机;而在 AerospikeDB 中,可以动态增加数据卷和吞吐量,无需停机,并且 AerospikeDB 可以自动平衡数据和流量;
  • 在 Redis 中,如果需要复制及故障转移功能,则需要开发人员自己在应用程序层同步数据;而在 AerospikeDB 中,只需设置复制因子,然后由 AerospikeDB 完成同步复制操作,保持即时一致性;而且 AerospikeDB 可以透明地完成故障转移;
  • 此外,AerospikeDB 既可以完全在内存中运行,也可以利用 Flash/SSD 存储的优点。

接下来,Lynn 针对下列工作负载做了两组基准测试:

  • 负载一:50%-50% 读 / 写 (-w RU, 50);
  • 负载二:80%-20% 读 / 写 (-w RU, 80);
  • 负载三:100% 读 (-w RU, 100)。

第一组基准测试是在单个没有永久存储的 AWS R3.8xlarge 节点上进行的,测试结果如下:

(图一)

从上图可以看出,在运行(负载三)时,AerospikeDB 和 Redis 性能相近,均接近 1 MTPS。

第二组测试是在同样的实例上进行的,但引入了永久性存储。所有数据既会保存在内存中,也会存储在 EBS SSD(gp2)存储上。在本组测试中,Lynn 为 AerospikeDB 配置了一个新的命名空间,并使用了配置参数“data-in-memory”。而且,为了避免写入单个文件造成瓶颈,她还为 AerospikeDB 配置了 12 个不同的可写入位置。对于 Redis,则启用了“appendonly”选项。在这种模式下,一旦 AOF 文件增长到一定的大小,Redis 就会在后台重写 AOF 文件。这时,Redis 的吞吐量就会下降。为了避免这种情况出现,Lynn 将 auto-aof-rewrite-min-size 参数设为一个很大的值。这在一定程度上会夸大 Redis 的性能。在这个场景中,磁盘写成为瓶颈。因此,Lynn 针对 AerospikeDB 和 Redis 均减少了客户端线程的数量,保证不出现写错误。测试结果如下:

(图二)

从上图可以看出,在运行(负载二)和(负载三)时,AerospikeDB 都比 Redis 略快。

此外,Lynn 还单独测试了 AOF 重写对吞吐量的影响,测试结果如下:

(图三)

从上图可以看出,AOF 重写对 Redis 读写性能均有较大的影响。

按照 Lynn 的说法,上述基准测试结果可能会因为云环境本身的不稳定性、调优技术和基础设置的差异而有所不同。感兴趣的读者可以查看原文了解Lynn 的测试步骤及配置细节。

在上述结果发布后,Redis 创建者Salvatore Sanfilippo 很快就以《我们为什么不做基准测试来比较Redis 和其它DB 》为题发表博文对此进行了回应。他认为,这种对比有广告嫌疑,并提供了一些从Redis 得出更好结果的方法。紧接着,Redis 首席开发大使 Itamar Haber 也发表了题为《漏掉的经验——在 AWS 云上进行 NoSQL 基准测试(AerospikeDB 与 Redis)》的博文,对 Aerospike 团队和 Lynn 的测试结果提出质疑,主要包含如下几点:

  • 该测试没有使用推荐的 Redis 做法,比如使用管道和多键操作;
  • 该测试没有测试工作负载:20%-80% 读写( -w RU,20 )和 100% 写(-w RU,0);
  • 比较(图一)和(图二)可以得出:在针对(负载三)的测试中,第一次测试结果为 928K TPS,第二次测试结果为 860K TPS,使用了 AOF 并不能完全解释这种差别;此处还有一点令人疑惑,后端使用 EBS 的 Redis 其性能(180K TPS)竟然高于只在内存中使用的 Redis 服务器(132K TPS)。

同时,Itamar 指出,对于 AOF,一个常见的做法是引入一个从属 Redis 实例,专门用于持久化处理,以减轻主实例的负担。

最后,他写道:

比较是一件很难做对却很容易做错的事。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015 年 2 月 06 日 10:5924737
用户头像

发布了 1008 篇内容, 共 313.6 次阅读, 收获喜欢 282 次。

关注

评论

发布
暂无评论
发现更多内容

聊聊园区网中的专网架构

冯骐

运维 网络 VRF 虚拟路由表

翻译:《实用的Python编程》03_05_Main_module

codists

Python

KubeEdge 1.6发布:可靠的K8s原生边云API

华为云原生团队

开源 云原生 开源项目 边缘技术 kubeedge

2021 创新加速周蓄势待发,铆足牛劲再出发!

亚马逊云科技 (Amazon Web Services)

人民网:亚马逊云科技,以这样姿势扎根中国!

亚马逊云科技 (Amazon Web Services)

Nydia

从JVM底层原理分析数值交换那些事

秦怀杂货店

JVM 交换数值

Elasticsearch Analyzer 分词器

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

云小课丨网络好不好,ping一下就知道

华为云开发者社区

网络 虚拟私有云 ping ICMP 安全组

是什么支持“毅力号”在火星上尽情摄影?

亚马逊云科技 (Amazon Web Services)

AI数学基础之:概率和上帝视角

程序那些事

人工智能 AI 程序那些事 概率论

MySQL数据库DDL、DML详解

若尘

MySQL

Kubectl Plugin 推荐(一)| 可观测性篇

郭旭东

kubectl kubectl plugin

笔记整理:技术架构涵盖内容和演变过程总结

小傅哥

Java 程序员 小傅哥 架构设计 架构图

华云大咖说 | 高校混合云建设及应用

华云数据

不知不觉不假思索——可供性

Justin

心理学 28天写作 游戏设计

《精通比特币》学习笔记(第二章)

棉花糖

区块链 读书笔记

为什么要学习计算机组成原理

Kylin

计算机组成原理 学习目标 计算机专业 3月日更

Shibboleth IdP4 升级指南

冯骐

认证 Shibboleth IdP 上海教育认证 上海教育

互联网短平快下,DevCloud如何支撑软件开发的“转型”?

华为云开发者社区

android 敏捷开发 软件开发 华为云 devcloud

详解NLP和时序预测的相似性(附赠AAAI21最佳论文INFORMER的详细解析)

华为云开发者社区

自然语言处理 深度学习 时序预测 RNN Informer

滚雪球学 Python 第二轮开启,进阶之路,列表与元组那些事儿

梦想橡皮擦

28天写作 3月日更

25个关键技术点,带你熟悉Python

华为云开发者社区

Python

智汇华云 | ArcherOS Stack—软件定义数据中心“利器”

华云数据

百分点大数据技术团队:数据治理“PAI”实施方法论

百分点大数据团队

百分点数据科学实验室:产品生命周期管理创新应用落地实践

百分点大数据团队

关于写作的一点小想法「Day 13」

道伟

28天写作

Java的锁

并发编程

算法攻关 - 链表中倒数第K个节点(O(n))_22

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 链表中倒数第K个节点

区块链农产品溯源系统开发,区块链农产品质量安全追溯体系建设

WX13823153201

区块链农产品溯源系统开发

SQL Server 删除正在使用数据库

田镇珲

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

AerospikeDB与Redis性能比较:在AWS上的NoSQL基准测试-InfoQ