当前位置: 首页 > 知识库问答 >
问题:

Hazelcast vs.Ignite基准

鲁滨海
2023-03-14

由于这里没有人问它,我将回答我自己的问题,以便将来所有的参考。这不是一个抽象的(学习)练习,而是一个真实的基准测试,它为我在大型SaaS系统中的数据网格使用建模--主要用于显示排序和过滤的分页列表。我主要想知道与原始的无框架Hazelcast和Ignite使用相比,我的通用JDBC数据网格访问层增加了多少开销。但既然我在比较苹果,基准来了。

共有1个答案

呼延聪
2023-03-14

我在GitHub上查看了提供的代码,并有许多评论:

  1. 最重要的一点可能是Apache Ignite索引比Hazelcast复杂得多。与Hazelcast不同,Ignite支持ANSI 99 SQL,因此您可以随意编写查询。
  2. 最重要的是,与Hazelcast不同,Ignite支持跨不同缓存或数据类型的组索引和SQL连接。假设您有人员表和组织表,您需要选择为同一组织工作的所有人员。在Hazelcast中,这在1步内是不可能完成的(如果我错了请纠正我),但在Ignite中,这是一个简单的SQL连接查询。

鉴于以上情况,Ignite索引将需要更长的时间来创建,尤其是在您的测试中,您有7个索引。

我不认为将单节点数据网格测试与MySQL进行比较是公平的,对Ignite和Hazelcast都是如此。数据库有自己的缓存,每当使用如此小的内存大小时,通常要测试数据库内存中缓存和数据网格内存中缓存。

每当在分区缓存上进行分布式测试时,性能优势通常都会出现。这样,数据网格将在每个集群节点上并行执行查询,结果返回的速度应该快得多。

以下是我为Apache Ignite获得的结果。在我做了前面提到的修复后,它们看起来好多了。

[00:45:15] Ignite node started OK (id=0960e091, grid=Benchmark)
[00:45:15] Topology snapshot [ver=1, servers=1, clients=0, CPUs=4, heap=8.0GB]
Starting - used heap: 225847216 bytes
Inserting 100000 records: ....................................................................................................
Inserted all records - used heap: 1001824120 bytes
Cache: 100000 entries, heap size: 775976904 bytes, inserts took 14819 ms
------------------------------------
Starting - used heap: 1139467848 bytes
Inserting 100000 records: ....................................................................................................
Inserted all records - used heap: 978473664 bytes
Cache: 100000 entries, heap size: **-160994184** bytes, inserts took 11082 ms
------------------------------------
Query 1 count: 100, time: 110 ms, heap size: 1037116472 bytes
Query 2 count: 100, time: 285 ms, heap size: 1037116472 bytes
Query 3 count: 100, time: 19 ms, heap size: 1037116472 bytes
Query 4 count: 100, time: 123 ms, heap size: 1037116472 bytes
------------------------------------
Query 1 count: 100, time: 10 ms, heap size: 1037116472 bytes
Query 2 count: 100, time: 116 ms, heap size: 1056692952 bytes
Query 3 count: 100, time: 6 ms, heap size: 1056692952 bytes
Query 4 count: 100, time: 119 ms, heap size: 1056692952 bytes
------------------------------------
[00:45:52] Ignite node stopped OK [uptime=00:00:36:515]
 类似资料:
  • 本章介绍本书所需要的一些准备工作. 请确保把各部分的准备工作完成 知识点 设置的Eclipse的编码 下载,安装,配置mysql数据库 配置Eclipse中Server环境

  • 11.4. 基准测试 基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;*testing.B参数除了提供和*testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。 下面是IsPalindrome函数的基准测试,其中循

  • GoCPPLua (JIT) 策略执行的负载在model_b_test.go中进行基准测试。 测试是: 英特尔 酷睿 i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 核, 8 处理器 go test -bench= -benchmem 的测试结果如下 (op = 一次 Enforce() 调用, ms = 毫秒, KB = 千字节): 测试用例 规则大小 时间开销 (m

  • C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互作用的对象组成。一个对象采取的动作称为方法。 相同种类的对象通常具有相同的属性,或者说,是在相同的类中。 例如,以 Rectangle(矩形)对象为例。它具有 length 和 width 属性。 根据设计,它可能需要接受这些属性值、计算面积和显示细节的方法。 让我们来看看一个 Rectangle(矩形)类的实现,并借此讨论

  • 下面是我试图测试的一件简单的事情,mod操作或a AND one(假设幂为2)的更快速度是多少——这就是hashMap在内部所做的。这是拼写正确的“测试”吗?我必须承认,jmh的内部结构,以及在检查了所有样本(我认为是第三次)后编写正确的微基准测试,是一个相当大的挑战。:)

  • These benchmarks were designed to measure Javascript running time for Mithril in comparison with other popular Javascript MVC frameworks. Javascript running time is significant because the gzipped siz