Hazelcast 发布了两篇基准测试文章,将其系统与 Redis 开源数据库进行了比较
最近,许多潜在客户和现有客户要求我们在 Redis Enterprise 和 Hazelcast 之间进行类似的(网络上的)基准测试。鉴于 Redis Enterprise 集群基于与开源集群不同的架构(更多解释请见此处),我们想看看这些结果是否会有任何差异。
起初,我们旨在重现 Hazelcast 使用的完全相同的基准测试设置,但他们显然使用了专有硬件。作为一家诞生于云端的公司,Redis 没有内部托管的服务器,因此决定在 AWS 上寻找类似的服务器配置。以下是我们使用的设置:
参数 | 值 |
服务器和客户端机器 |
|
服务器机器数量 | 3 |
客户端机器数量 | 3 |
Redis Enterprise | Hazelcast | |
操作系统版本 | Ubuntu 16.04 | |
集群版本 | 5.2.0 | 3.9 |
集群配置 |
| 3 个成员 |
在其基准测试中,Hazelcast 使用了 RadarGun 来协调针对 Hazelcast 和 Redis 生成的负载。对于 Redis,RadarGun 启动了一个 Jedis 集群,并使用了类似于 这个 的配置文件(尽管我们在 Hazelcast 列出的 这个 分支中找不到确切的设置)。
使用正确的工具测试产品对于成功运行基准测试至关重要。例如,大多数专家更喜欢使用 管道技术 测试 Redis,因为这能加速 Redis,并且被大部分 Redis 用户使用。然而,我们在 Hazelcast 的基准测试中没有找到管道配置。
因此,我们采用了以下方法:
Redis Enterprise | Hazelcast | |
版本 | 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 在网络上的基准测试,并进行了两项主要更改:
我们发现 Hazelcast 的性能结果与该公司在 此处 发布的结果非常相似(或更好)。因此,我们倾向于相信 Hazelcast 集群和 RadarGun 协调器配置正确。
另一方面,我们的测试发现 Redis Enterprise 集群的吞吐量(超过 3.5 倍)和延迟(约 3 倍)比 Hazelcast 好得多。我们认为这些差异与以下因素有关:
如果您对此基准测试有疑问,请随时通过电子邮件联系我:keren at redis.com。如果您想了解更多关于 Redis Enterprise 的信息,请访问 此处 或发送电子邮件至 product at redis.com。