dot 快速的未来正在你所在的城市举办活动。

加入我们在 Redis 发布会

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(在 3 节点集群上运行 48 个主节点和 48 个从节点)与 Hazelcast IMDG 3.8 3 节点集群,两者都在网络上运行。

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

基准测试设置

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

硬件配置

参数
服务器和客户端机器
  • 类型为 m4.10xlarge 的 EC2 实例:英特尔 E5 160GB 内存 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,使用 Redis 集群 API。

负载生成配置

 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 Enterprise,使用开源 Redis 集群 API。

我们发现 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 联系。