Ignite vs Hazelcast

内存数据网格工具的性能之争

内存数据网格HazelcastIgnite是大家非常熟悉的两种分布式内存数据网格工具。

Hazelcast 是一款基于 Java的内存数据网格,它的名称和公司的名称相同。hazelcast支持分布式队列,集合,map,线程池,锁,支持事务处理,分布式的监听和事件,支持动态增加集群节点,动态备份数据,动态failover等。

关于Apache Ignite 的中文介绍可以参考李玉珏写的Apache Ignite(一):简介以及和Coherence、Gemfire、Redis等的比较等系列文章。Ignite来源于尼基塔·伊万诺夫于2007年创建的GridGain系统公司开发的GridGain软件,2015年1月,GridGain通过Apache 2.0许可进入Apache的孵化器进行孵化,很快就于8月25日毕业并且成为Apache的顶级项目,9月28日即发布了1.4.0版,2016年1月初发布了1.5.0版,迭代速度很快。

两个产品背后的公司Hazelcast和GridGain都有风投的背影。所以产品在开源免费的基础上还会提供商业版的支持。

我没有在实际产品中使用过这两款产品,仅仅关注过这一类的产品,所以并不完全了解它们的详细特性,但是最近的一些有趣的争论引起了我的兴趣,特地跟踪了多个帖子,弄清楚了争论的来龙去脉,特地整理了一下,也算作为我的性能系列的文章的一部分吧。

最近的事件是这两个产品背后的公司进行了激烈的性能之争。

起因是GridGain发布了一篇性能报告:GridGain vs. Hazelcast Benchmarks, 它比较了最新的GridGain Community Edition 1.5.0 和 最新的Hazelcast 3.6-EA2的性能,测试数据显示Ignite的性能要好于Hazelcast。相关的测试代码可以参照yardstick-ignite yardstick-hazelcast

进一步GridGain还到Hazelcast的用户讨论组中踢馆子,他们把测试结果和代码发布在Hazelcast的邮件列表中,请Hazelcast的人review和提意见。嚣张啊!
Hazelcast的CEO Luck把这个帖子从邮件列表中删除了,并说:

我们认为你在我的地盘上发布这样的性能数据是不合适的。 我们将删除这个帖子,请发布在你的地盘上。

当然,这也不是GridGain第一次踢馆子,在2015初Apache孵化器Ignite项目的导师Konstantin Boudnik就到Tachyon 的邮件列表中比较这两个项目的缓存特性差异,也被认为是营销惨遭删帖。

Hazelcast的CEO Luck也进行了有理有据的反驳,它根据GridGain的测试代码在它们的测试环境中进行了测试,根据它们的测试结果,Hazelcast 3.6-EA 也比Ignite 1.4.1快(但是Luck在它的反驳文章中的标题中写的是Ignite 1.5,估计被气晕了)。

他也指出GridGain的测试不公正的地方:

  1. Hazelcast的备份设置为同步复制但是Ignite自己设置为异步复制
  2. 对Hazelcast的测试使用map.put()代替map.set(),但是Ignite的put等价Hazelcast的map.set(),因为它们才是无返回值的方法

更正了这两处错误,Hazelcast重新做了测试,相关的代码配置也发布在github上。

最后他指出GridGain在测试中造假, 不符合Apache孵化器的准则,你不能污蔑啊,不能诽谤啊,造假得出的性能报告有什么意义。

这里是Hazelcast的测试报告

相信Hazelcast CEO的文章鲜明地指出了GridGain错误,扭转了对他们不利的印象,而且反驳的观点也不错。我比较佩服他们争论的方式,比骂街文明多了。

GridGain创始人之一Dmitriy Setrakyan,也是他们的工程EVP,次日又进行了反驳,对Luck的造假指控进行了辩解。
首先他对Luck在邮件列表中删除他的帖子耿耿于怀,讽刺删帖行为是商业公司和Apache项目的区别。

GridGain根据Luck博客的反馈又重新进行了测试,结果表明大部分在AWS上的测试Ignite要比Hazelcast快50% ~100%,当然他文章的标题有点夸张,Ignite要比Hazelcast快两倍。

对于Luck指出的错误,他进行了解释:

  1. Map.put() -> Map.set()问题: GridGain更正了错误,但是测试结果没有显著的区别
  2. 备份复制的问题:他说它们的配置和Hazelcast的完全一样。

公说公有理,婆说婆有理,这场争论还会持续下去。对于开发者来说,有竞争未必是一件坏事。

参考资料

  1. http://www.theregister.co.uk/2016/02/22/gridgain_benchmark_hazelcast_bunfight/
  2. go.gridgain.com/Benchmark_GridGain_vs_Hazelcast.html
  3. http://blog.hazelcast.com/fake-benchmark-corrected-benchmark-shows-hazelcast-3-6-is-much-faster-than-gridgainapache-ignite-1-5/