dot Redis 8 发布了——它是开源的

了解更多

Redis Enterprise 5.2.0 与 Hazelcast 3.9 的基准测试

背景

Hazelcast 发布了两篇基准测试文章,将其系统与 Redis 开源数据库进行了比较

  • 第一篇(发布于 2016 年 5 月 20 日)不公平地将通过网络运行的四个独立的开源 Redis 3.0.7 实例与运行在近缓存模式下的 Hazelcast IMDG 3.6 四节点集群进行了比较。
  • 第二篇(发布于 2017 年 4 月 4 日)将开源 Redis 集群 3.2.8 版本(在三节点集群上运行 48 个主实例和 48 个从实例)与 Hazelcast IMDG 3.8 三节点集群进行了比较,两者都通过网络运行。

最近,许多潜在客户和现有客户要求我们在 Redis Enterprise 和 Hazelcast 之间进行类似的(网络上的)基准测试。鉴于 Redis Enterprise 集群基于与开源集群不同的架构(更多解释请见此处),我们想看看这些结果是否会有任何差异。

基准测试设置

起初,我们旨在重现 Hazelcast 使用的完全相同的基准测试设置,但他们显然使用了专有硬件。作为一家诞生于云端的公司,Redis 没有内部托管的服务器,因此决定在 AWS 上寻找类似的服务器配置。以下是我们使用的设置:

硬件配置

参数
服务器和客户端机器
  • EC2 m4.10xlarge 实例:Intel E5 160GB RAM 10Gb Xeon E5-2676
  • 内存:160GB
  • 网络:10Gbps 以太网
服务器机器数量3
客户端机器数量3

软件和集群配置

 Redis EnterpriseHazelcast
操作系统版本Ubuntu 16.04
集群版本5.2.03.9
集群配置
  • 48 个主实例 + 48 个从实例(每节点 16 + 16)
  • 每个集群节点上有 16 个代理线程
3 个成员

负载生成工具

在其基准测试中,Hazelcast 使用了 RadarGun 来协调针对 Hazelcast 和 Redis 生成的负载。对于 Redis,RadarGun 启动了一个 Jedis 集群,并使用了类似于 这个 的配置文件(尽管我们在 Hazelcast 列出的 这个 分支中找不到确切的设置)。

使用正确的工具测试产品对于成功运行基准测试至关重要。例如,大多数专家更喜欢使用 管道技术 测试 Redis,因为这能加速 Redis,并且被大部分 Redis 用户使用。然而,我们在 Hazelcast 的基准测试中没有找到管道配置。

因此,我们采用了以下方法:

  • 使用 RadarGun 协调器测试 Hazelcast(我们假定,既然 Hazelcast 选择了它,该公司可能对其系统产生的基准测试结果感到满意)。
  • 使用 memtier_benchmark(一个用于 Redis 和 Memcached 的开源负载生成工具)结合 Redis Cluster API 来测试 Redis。

负载生成配置

 Redis EnterpriseHazelcast
版本memtier_benchmark
版本 1.2.8
RadarGun 版本 3.0.0
每个客户端的线程数64
读写比例80:20
对象数量400 万
对象大小字符串,长度在 100 字节到 10,000 字节之间随机分布
总数据集大小42GB
使用的命令行memtier_benchmark –cluster-mode
-s <ip_address> -p <port_number> –key-maximum=4000000 –test-time=900 –data-size-range=100-10000
-c 1 -t 64 –pipeline=5
–key-pattern=P:P –ratio=1:4
–distinct-client-seed
dist.sh -c benchmark-hazelcast-server.xml -t -u ubuntu -o `pwd` -m ip-radargun:2103 ip-server-1 ip-server-2 ip-server-3 ip-client-1 ip-client-2 ip-client

基准测试结果

我们的基准测试结果如下所示:

总结

我们重新运行了比较 Hazelcast 和 Redis 在网络上的基准测试,并进行了两项主要更改:

  1. 这一次,我们测试了 Redis Enterprise 集群,而不是开源版本的 Redis。
  2. 我们使用 memtier_benchmark 负载生成工具,而不是 RadarGun,以使用开源 Redis Cluster API 测试 Redis Enterprise。

我们发现 Hazelcast 的性能结果与该公司在 此处 发布的结果非常相似(或更好)。因此,我们倾向于相信 Hazelcast 集群和 RadarGun 协调器配置正确。

另一方面,我们的测试发现 Redis Enterprise 集群的吞吐量(超过 3.5 倍)和延迟(约 3 倍)比 Hazelcast 好得多。我们认为这些差异与以下因素有关:

  1. Hazelcast 使用了不合适的工具来测试 Redis(我们还认为,如果他们的团队使用了正确的负载生成工具,Hazelcast 的开源基准测试也会显示 Redis 的结果好得多);以及
  2. Redis Enterprise 被设计成能很好地结合管道和开源集群 API 使用。 

附录

Redis Enterprise 结果

Hazelcast 结果

RadarGun 基准测试协调器

如果您对此基准测试有疑问,请随时通过电子邮件联系我:keren at redis.com。如果您想了解更多关于 Redis Enterprise 的信息,请访问 此处 或发送电子邮件至 product at redis.com