我在Hazelcast上运行了一个简单的基准测试(使用JMH
),并将其与Apache Ignite
进行了比较。
这是用于单节点部署。
默认保留缓存配置
final Config config = new Config();
return Hazelcast.newHazelcastInstance(config);
然后我在地图上使用put
和get
private IMap<Long, Customer> normalCache = hazelcast.getMap( CacheName.NORMAL.getCacheName());
public void saveToCache(Customer customer) {
normalCache.put(customer.getId(), customer);
}
从结果看,Ignite似乎比Hazelcast快3-4倍。
我发现差异会小很多。
无论是对于Ignite还是Hazelcast,我都没有使用任何其他优化(靠近缓存等),只是采用了默认配置(结果以ops / sec,吞吐量为单位)。
这是预期的性能差异还是结果错误?
答案 0 :(得分:7)
请在客户端服务器设置中运行,或者在多个节点上运行。
如果发生Ignite,则AFAIK如果已完成本地调用,则将在调用线程上完成,而不是卸载到分区线程中。
对于基准测试来说不错,在生产环境中不是很有用,因为大多数调用都不是本地的(在安装客户端服务器的情况下,没有本地调用)。
答案 1 :(得分:3)
您正在使用分布式系统进行单节点部署???真的,不要那样做,就像用保时捷在泥泞的田野上开车。如果您要单节点尝试其他功能,例如EhCache,我猜您不需要高可用性,备份等。
如果要在Ignite或Hazelcast中进行选择,请运行真实的分布式测试。使用“客户端/服务器”启动3个节点,然后查看哪个节点最快。