卡桑德拉vs卡桑德拉+点燃

时间:2018-04-30 05:58:55

标签: cassandra ignite cassandra-3.0

(单节点群集)我有一个包含2列的表,其中一列是' text'类型,另一个是' blob'。我使用Datastax的C ++驱动程序在Cassandra中执行读/写请求。

blob正在存储C ++结构。(大小:7 KB)。

由于单独使用Cassandra时,我的吞吐量低于理想的吞吐量,我尝试在Cassandra上添加Ignite,希望性能有显着提高,因为现在数据将从RAM而不是硬盘中读取

然而,事实证明,在添加Ignite之后,性能下降得更多(大约50%左右!)。

count

由于我在Cassandra的Blob中存储C ++结构,因此Ignite API在写入/读取数据时使用序列化/反序列化。这是因为性能下降(考虑结构的大小,即7K),还是这种下降完全没有预期,可能在配置上出现了问题?

Cassandra:3.11.2 RHEL:6.5

Ignite的配置与给定的here相同。

当我在原始模式下使用serialization时,我的Ignite + Cassandra吞吐量得到了显着改善。现在吞吐量从9000行/秒增加到23000行/秒。但是,它仍然没有明显优于卡桑德拉。我仍然希望找到一些可以进一步改进的调整。

我已在github上添加了有关配置和客户端代码的更多详细信息。

1 个答案:

答案 0 :(得分:0)

看起来你在Ignite的这个基准测试中为每个键做了一次获取,而你之前没有调用loadCache。在这种情况下,在每次获取时,Ignite将转到Cassandra以从中获取值,并且只有在它将其存储在缓存中之后。因此,我建议在基准测试之前调用loadCache,或者至少测试获取相同的密钥,以便Ignite能够将密钥存储在缓存中。如果您认为已经拥有缓存中的所有数据,请分享您将数据写入Ignite的代码。

另外,你调用" grid.GetCache"在每个帖子中 - 它不会花费很多时间,但是当你已经测量了时间时,你绝对应该避免在基准测试中使用这些东西。