在Redis Enterprise 5.0版本中,其团队引入了对开源(OSS)集群API的支持,允许Redis Enterprise集群通过添加分片和节点以线性方式进行扩展。本文给出了第一个线性扩展基准测试,并展示了这种无限的线性扩展能力。
线性扩展是什么?
根据维基百科的介绍,可扩展的数据库是一个可以通过添加新的处理器和存储来升级处理更多事务的数据库,并且可以在不影响使用的情况下轻松升级。数据库可以向外扩展(通过向集群添加节点,重新平衡并分配数据库)或向上扩展(通过向数据库添加分片而无需向集群添加节点)。Redis Enterprise经过优化,只需将其绑定到磁盘即可扩展。
线性扩展意味着通过添加与吞吐量相关的资源(在Redis术语中,“资源”指的是节点和分片)来顺序扩展数据库。真正的线性可扩展意味着资源量以与数据库吞吐量以相同的比例增加,并且以确定的方式增加。例如,将集群资源增加50%将导致吞吐量增加50%。
如果数据库可以线性扩展,则可以最大限度地降低运营开销并可扩展业务,而无需担心数据库中的大小限制或性能瓶颈。但是,通常会出现与扩展相关的开销,这意味着当容量增加N时,数据库吞吐量通常会增加一个比N少(或少得多)的数字。
数据库提供:
-
亚线性扩展——当相对容量小于资源数量时。
-
线性扩展——当相对容量等于添加资源的相对数量时。
-
超线性扩展——当相对容量因增加资源而增加时。
Redis Enterprise的简要介绍
Redis Enterprise术语中的集群是一组云实例,虚拟机/容器节点或裸机服务器,允许创建任意数量的Redis数据库(Redis Enterprise术语中的数据库是跨多个Redis分片/实例管理整个数据集的实体,不要将此与每个Redis实例中的数据库混淆,你可以使用Redis SELECT命令在键空间中进行分段)在整个集合共享的内存池中。集群具有对称的无共享架构,数据路径与控制和管理路径之间完全分离,它包括以下主要组件:
-
Redis Shards-具有主或从的Redis实例
-
Zero-latency Proxy- 构建在多线程、无状态架构之上,负责隐藏集群的复杂性,增强安全性(SSL,身份验证,DDoS保护)并提高性能(无TCP连接管理)
-
Cluster Manager(控制和管理路径) - 由集群节点上的一组分布式进程构建,负责集群配置、响应请求、资源管理等工作,以及充当资源监视器并完全使Redis分片管理集群中其他分片的运行状况或执行故障转移。
可以在以下任何一种配置中创建Redis Enterprise集群中的数据库:
构建测试环境
综合各方面因素,其团队决定在AWS上构建测试环境,以验证Redis Enterprise是否能够以线性方式实现无限扩展。最终测试使用的是EC2 m4.16xlarge实例(64核,256GB RAM)用于集群节点和c4.8xlarge实例(36核,60GB RAM)用于运行memtier_benchmark,一个开源多线程负载生成工具。
使用多个memtier_benchmark实例是必须的,因为在许多情况下,单Redis Enterprise节点可以处理比单memtier_benchmark实例更多的流量,这种方法可避免单个NIC网络带宽和数据每秒传输限制,并且可以逐步(逐个实例)增加流量负载。
这是其团队的最终设置:
Redis Enterprise集群节点的6x m4.16xlarge实例:
运行memtier_benchmark的8x c4.8xlarge实例:
在过去几个月,其团队进行了多次测试,其中包括k节点Redis Enterprise集群其他基准测试n-shard数据库,如下所示:
表1:Redis Enterprise线性扩展,同时提供亚毫秒级性能。
图1:集群吞吐量(@ 1毫秒延迟)
这表明随着吞吐量的增加,其节点的线性扩展能力增加,Redis Enterprise能够在所有数据大小和工作负载上始终如一地提供亚毫秒级延迟。
创建和调整集群数据库
其团队使用Redis Enterprise API创建了一个192-shard集群Redis数据库,其中包含以下参数:
我们通过将proxy 线程数设置为24来调整每个节点上的proxy以应对预期的负载:
当然,其他数据库供应商也发布了许多关于其扩展能力的基准测试数据。实际上,结果表明Redis Enterprise的表现优于NoSQL同行。以下图表是其他NoSQL供应商的基准测试结果,该图表比较了Apache Cassandra,HBase,MongoDB和Couchbase。
从图表中可以看出,所有供应商都提供了亚线性扩展能力。例如,如果按节点分析Cassandra的吞吐量,Cassandra的1个节点可处理大约18,700 ops /秒,以此类推,32个节点时应该能够处理大约600,000 ops /秒。但实际上,它只能处理大约330,000ops /秒,只具备真正线性扩展数据库55%的能力。
凭借其最新的基准测试,Redis Enterprise已证明其每秒能够处理数百万次操作,即使在最基本的配置情况下也是如此。如下图所示,Redis Enterprise的性能优于其他数据库,可提供超线性扩展而不会影响性能!
表3:Redis Enterprise ——节点的最佳与实际吞吐量
这一新的基准测试证明了Redis Enterprises能够实现真正的线性可扩展性,同时通过有效的资源利用提供强大的性能,但是,基准测试中并未提到其他参与数据库的版本是企业版还是开源版,因此数据还有待考量。