Apache Cassandra和Apache Ignite:对比测试,强大的内存计算


声明:本文转载自https://my.oschina.net/liyuj/blog/1791208,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

一个被频繁提出的问题就是,Apache Cassandra和Apache Ignite之间的区别是什么,这很正常,因为这两个数据库有很多的共同之处,比如水平扩展性、高可用和持久化。在本系列的前四篇文章中,已经介绍了了架构以及从开发角度上的主要区别:

在对比Ignite和Cassandra时,还有一个无法回避的问题,现在也需要揭晓答案,问题很简单,就是两者的性能差异如何?从哪里可以得到性能测试结果?

自从Ignite完整支持内存存储之后,两者之间的测试就变得不再对等,因为Ignite可以在内存中持有TB甚至PB级的数据,而Cassandra的内存选项非常有限。但是,不管怎样,测试一下性能指标然后分享出来,还是有价值的。

环境和配置

下面快速浏览一下测试环境以及Ignite和Cassandra配置参数的细节,没什么特别的,这类文章都会有这样的内容。 常规参数

  • 硬件:
    • CPU:2x Xeon E5-2609 v4 1.7GHz
    • RAM:96Gb
    • SSD:3x800Gb SSD RAID0 2.4Tb
    • 网络:10Gb/s
  • 集群大小:3服务端节点,1客户端节点(应用)
  • 测试框架:Yahoo! Cloud Serving Benchmark
  • 数据大小:8000万条目/记录

Ignite参数

  • 版本:Apache Ignite 2.4
  • 内存配置:所有数据都同时存储在内存以及Ignite持久化中
  • 缓存模式:ATOMIC
  • 复制因子:1主1备
  • 写同步模式:FULL_SYNC
  • WAL刷新模式:LOG_ONLY

Cassandra参数

  • 版本:3.11.1
  • 键空间:2副本
  • 写一致性:ALL
  • 读一致性:ONE
  • commitlog_sync:periodic(默认),10s
  • JVM_OPTS="-Xm48g -Xmx48g -Xmn1600M -XX:+UseG1GC"
  • key_cache_size_in_mb: 4096
  • row_cache_size_in_mb: 32768
  • caching = { 'rows_per_partition' : 'ALL' }
  • bloom_filter_fp_chance = 0.01
  • 读测试执行两次,对缓存进行预热

预期结果

首先,使用32个应用线程,模拟小负载访问Ignite和Cassandra,下图是最终的测试结果: 1

Y轴表示每秒操作数,X轴表示度量的操作类型,总而言之,这一轮测试告诉我们:

  • 对于读负载,Ignite显著优于Cassandra(快3倍),对于混合负载(读+更新,快2倍),这很正常,因为Ignite在内存中有数据的完整副本;
  • 对于密集的写负载(插入和更新),两者差不多,因为两者都需要将变更持久化到磁盘。

接下来,会使用256个应用线程并行地增加负载: 2

会发现,两者都发生了明显的变化:

  • Ignite保持了在读负载和混合负载下的领先优势,平均快6倍;
  • Cassandra在更新操作中领先,这是合理的,因为Cassandra列式存储在架构上对这些操作有利,所以本次测试在预期范围内对其进行了重现,而Ignite继承了大部分关系数据库的原则,比如对一致性和索引数据的处理。

Ignite还是Cassandra?

如果性能需求和严格的SLA影响最终决定,那么对于高负载情况下的写密集应用,Cassandra会是一个好的选择,而对于Ignite,在重度的或者混合负载下,会有超预期的表现。

此外,作为整个系列的总结,公平地讲,虽然性能对决策有很大的影响,但是还有很多其他的因素需要考虑。比如,因为写密集型负载的性能而选择了Cassandra的,就放弃了分布式事务的强一致性、放弃了规范化架构、放弃了使用SQL进行查询的优势。同时,如果确实需要Ignite中超过Cassandra的功能(简化架构强一致并置处理和SQL内存级性能),那么对于写密集负载考虑使用Ignite也是符合逻辑的,因为从测试结果来说,两者在中等规模负载情况下,性能差不多。

最后,本文和测试完成于2018年3月15日,谁知道未来会怎么样呢?拭目以待吧。

本文译自社区Denis Magda的博客

本文发表于2018年04月08日 22:38
(c)注:本文转载自https://my.oschina.net/liyuj/blog/1791208,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 3069 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1