120万操作/秒Redis Cloud 集群单一服务器非基准测试程序

【编者按】日前,来自Aerospike公司的Anshu和Rajkumar在High Scalability网站上发表文章宣称其能 以1.68美元/小时的成本获取百万TPS,受此影响,Redis Labs的Itamar Haber 利用非基准测试程序,在作者看来基准测试程序往往是一个陷阱,那么Redis的测试结果到底如何呢?

以下为译文:

前不久有一天,我看到来自Aerospike公司的Anshu和Rajkumar写的文章。非常喜欢这篇文章,给我印象特别深刻的是他们对EC2实例的重度调整继而突破100万大关,但我一直在想——Redis怎么做?

我本来可以做一个成熟的基准测试程序,但一个成熟的基准测试程序既耗时又耗资源。而且这还不考虑开始的意想不到的困难。 真正的基准测试无疑是个圈套,它只是积累在特定优化和步骤上的作秀而已。但是我想要一个答案,我想要更快,所以我愿意做出一些牺牲。这就是近乎完美的——非基准测试程序。

我自己给非基准测试程序下的定义就是一点也不像基准测试程序(因此得名)。在这里,你可以轻装上阵。依托我们实验室同事们的专业知识,我们在没有进一步优化的前提下测量了Redis Cloud软件的性能。我们使用以下设置运行我们的非基准测试程序:

  • 单分片Redis Cloud内存NoSQL数据库服务器运行在一个Amazon实例上。
  • 300万对象,每个对象大小在100字节。
  • 运行在非服务器端实例上memtier_benchmark工具客户端,使用下面的命令行参数: `--ratio=1:1 -n 1000000 -d 100 -t 1 -c 50 --pipeline=75 --key-pattern=S:S`.
  • 按相同比例混合读写工作负载(我们没有特别偏向其中一种操作类型,感觉这种混合更好地反映现实)。
  • 一个按需c3.8xlarge实例。

我们没有时间去建立一个VPC以及调整Placement Groups到最佳性能,因此我们在自己的标准服务环境运行所有东西——即在嘈杂、拥挤的EC2网络。当然,我们也没有为这个试验调整CPU行为或线程数量以及分片的配置,只让Redis Cloud使用其默认值。我们没有测试多重网络配置或添加额外的弹性网络接口(ENI),只是简单的在HVM 上提供全新的预分配Redis Cloud 服务器以及为它做了非基准测试程序……

在这个要点上,你可以从我们的运行上获得原始输出,但结果是略高于120万TPS(确切地说是1228432)。当然,这令人惊异的结果着实刺激到我,我立即要求一个成熟的、包括全面的优化的、彻底的、面面俱到的基准测试程序来真正测试Redis可以达到的极限,你猜怎么着?

分片和Redis Cloud 集群

通过设计,Redis服务器(大部分)是一个单线程的进程。既然如此,分片通常用来部署超过单核或独立服务器RAM性能的Redis数据库。这里有被普遍接受的三种方法实现分片:客户端、代理或集群。 因为针对分片Redis的客户端和基于代理解决方案,相对容易独立于实际的底层数据库引擎实现,这些(如Redis-rb和nutcracker)已经深入人心。然而,如今只有很少Redis集群解决方案。

一个分片Redis集群意味着Redis服务器(流程)要部署在网络中一个或多个计算节点。集群运行Redis数据库,每个可能跨许多节点和多核,超过RAM总数。一个产品级别的集群不仅要确保数据库的性能和基础设施的管理以及数据库资源,也要确保其可用性。

最著名的Redis集群实现当然应该是开源的,当然,Redis cluster(v3)已经进入beta版后期,并且预计将在数月内正式公布。这个即将推出的版本将为当下诸多的挑战提供优秀的答案。在其许多新特性中,新OSS版本还包括能够创建分片集群。就整个Redis社区来讲(如果冒犯某些人,抱歉),我们认为Redis版本3在各个方面都是一个重要的版本。

除了开源v3,还有其他一些Redis集群。有些人走在前面并且构建了自己的集群,每个人都有自己的原因。我不想借任何人抬高自己(像Twitter、Weibo或Pinterest),但有一家公司,已经建立了一个集群,那就是Redis Labs。我们Redis Cloud服务是由自己实现的Redis 集群提供技术支持的,并且过去两年中,已经在自己的大部分产品种使用。在此期间,我们一直在跨多重云和数据域上构建和运营我们的集群。

Redis Labs是Redis项目的开源贡献者——我们的大部分员工都很棒并且和公司同呼吸共命运——但我们用户需要的解决方案并不是都在开源的范围。为了满足这些业务挑战,我们开发的解决方案允许我们在系统运行时扩展Redis数据库从MB到TB。我们在四个不同的IaaS提供商和 20数据中心上部署、扩展和管理集群。用户们构建了数以万计的数据库,我们不仅要维护每个数据库的可用性和性能,同时也要兼顾运营和管理任务。

下面是关于Redis Labs集群鲜为人知的事实:你无需在你应用程序中做任何改变就可以开始使用它们。是的,你可以使用现有的代码和客户端库,并且仍然会获得集群提供的所有可扩展性、可用性以及运营方面的好处。用户只需要创建数据库和配置选项(可用性、数据持久性、分片、安全等诸如此类),他们只需要在Redis Cluster中使用单一Redis URL(主机名和端口)。当然,在这上面你可以做诸如调整、最佳实践、优化等,但(正如在非基准测试程序所示),即使没有它们,我们的集群也是一个了不起的执行者。

原文:The 1.2M Ops/Sec Redis Cloud Cluster Single Server Unbenchmark

 (http://highscalability.com/blog/2014/8/27/the-12m-opssec-redis-cloud-cluster-single-server-unbenchmark.html)

(编译/魏伟 审校/仲浩)

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2014-09-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏移动安全

APP加固方案需稳定与安全并重

很多开发者没有意识到APP的安全隐患可能会严重损害他们的利益,加固可以帮助他们规避很多风险;

8K90
来自专栏linux、Python学习

系统慢得一批?看数据库运维老司机如何做优化

记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的。这也是为什么自己特别喜欢看案例,今天也分享自己做的优化...

10730
来自专栏EAWorld

Service Mesh解读:新一代微服务技术新秀

作者:William Morgan 译者:月满西楼 原题:What’s a service mesh? And why do I need one? Ser...

40060
来自专栏腾讯云技术沙龙

朱展:腾讯云小程序解决方案

大家下午好,我今天给大家带来的分享主题是腾讯云小程序解决方案。首先做一个自我介绍,我叫朱展,来自腾讯云,目前负责腾讯云小程序解决方案,从事设计开发的工作。

1.7K140
来自专栏CSDN技术头条

共享出行业务下的高并发场景

某共享汽车出行平台从随着业务的发展,可能大家听到出行以为是滴滴,然而不是,不过今年美团等巨头也入场共享汽车行业,表明公司业务至少是不错的,城市也在不断扩张。

24860
来自专栏IT大咖说

每秒处理1000万用户请求…云上架构如何实现高性能和高可用

41910
来自专栏网络

学web前端开发写给新手的建议,超实用!

如今我们使用的互联网,客户端与服务器端的交互无时无刻不在发生。比如我们在浏览器打开网页,浏览器就是客户端,将网页数据发过来的也就是服务器。其实服务器,并没有什么...

25390
来自专栏杨建荣的学习笔记

excel查询数据的技术实现选择 (r7笔记第73天)

最近有一个高中同学问我一件事情,就是他们目前使用excel需要经常查很多数据,但现在使用excel的筛选功能感觉比较费劲。想问问我有没有什么改进 的方法,对于我...

36950
来自专栏云计算D1net

云端虚拟机故障切换遭遇的重重挑战

故障切换到远程站点是一项成熟的技术,云存储也是一项成熟的技术。但是如果用户们在遇到故障后想把虚拟环境切换到云端,他们就面临独特的挑战。 虽然这两个过程都用到复制...

35180
来自专栏北京马哥教育

Python自动化测试框架有哪些?

令开发者万分高兴的是,开发自己的测试框架的日子终于结束了。以前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化...

10400

扫码关注云+社区

领取腾讯云代金券