37

超越Redis?Ignite是后生可畏还是班门弄斧?

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg%3D%3D&%3Bmid=2650789754&%3Bidx=1&%3Bsn=bddae25655cfb3b2033ac86216eee8b6
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

aURFJb6.gif

最近在一个新的项目技术选型的时候看到了Ignite。Ignite作为一个高性能,分布式内存计算和事务平台,解决了大规模、大数据量、高并发的企业级应用的痛点,是一个非常有潜力的技术。

一、Ignite的特点

1、多级存储

Ignite对多级存储的支持主要有三种模式:内存,内存+数据库,内存+原生持久化。

内存: 仅使用内存存储数据,为了保证数据不丢失,应该保证数据至少有一份备份。

内存+数据库: 在数据库上层用Ignite作为缓存,这里的数据库可以是传统的数据库,例如MySQ,Oracle等。在这里Ignite的作用类似于我们常用的Ehcache,Guava Cache等,但是Ignite是分布式的且更加强大。

内存+原生持久化: Ignite本身支持持久化,可以将数据全部持久化到磁盘,同时将全部或者部分热点数据加载到内存中。

2、持久化

Ignite本身的持久化支持分布式,事务和SQL语句,具体持久化过程如下图所示:

vyQfam6.jpg!web

持久化

持久化的核心在于Write-Ahead Log (WAL),其目的在尽快将数据更新到磁盘,并且保证在整个集群出现问题时能够恢复数据。

3、分布式SQL

Ignite支持关系型数据库中的SELECT, UPDATE, INSERT, DELETE操作,甚至还支持JOIN操作。上面我们说到Ignite有三种不同模式,每种模式对SQL的支持不一样。

InUVbq2.jpg!web

分布式SQL

内存模式: 在这种模式下支持上述的各种SQL操作,且性能非常好。

内存+原生持久化模式 :这种模式下支持上述的各种SQL操作,且并不需要把全部数据加载到内存中,Ignite的SQL引擎支持内存和硬盘的联合查询。

内存+数据库模式: 这种模式不支持Ignite和数据库的联合查询,也就是说,对于一条语句查询或者更新,Ignite的SQL引擎不会分别从Ignite内存和数据库中取出满足条件的数据并且聚合后返回,这是目前做不到的。除非将外部数据库的数据全部加载到Ignite中。

4、分布式Key-Value

Ignite可以作为一个传统的K-V存储使用,类似于我们之前常用的Redis,这里就不再赘述。

MFz26jJ.jpg!web

Key-Value存储

5、分布式事务

Ignite 支持分布式事务,无论是做缓存还是数据持久化到硬盘都可以保证数据的一致性。

vMnAv2z.jpg!web

分布式事务

Ignite支持多种分布式事务方式,主要有两段式提交和三段式提交以及Ignite本身的WAL。两段式和三段式是分布式事务常用的两种方式,不再赘述。

这里简单说下Ignite本身的WAL方式,WAL是Write-Ahead Log的简称,数据在持久化到磁盘的时候会先写到日志文件里面,然后再更新到磁盘。这种方式只支持Ignite原生的持久化方式,如果是内存+外部数据库的方式,只能选择两段式或者三段式事务。

6、集中处理

在传统的关系型数据库或者非关系中数据库中,我们通常将数据从数据库取到客户端应用进行处理,而Ignite采用了一种不同的方式,将复杂的计算或者是SQL直接放在Ignite集群的节点上处理,将执行的结果返回给客户端应用。这样就避免了大量的数据在网络上传输。

ma2UNnz.jpg!web

Ignite集中处理

7、机器学习

Ignite为构建机器学习模型提供了一套简单,弹性和有效的工具集,且不需要做数据转换。机器学习不熟悉,这里就不班门弄斧了。

zAn2uu6.jpg!web

Ignite支持机器学习

二、Ignite使用场景

根据上面Ignite的特点,Ignite适合的使用场景主要有几种:

1、作为缓存或者数据库使用

Ignite可以作为应用的缓存层甚至是直接作为数据库使用,因为Ignite不仅支持数据的内存存储,还支持持久化和事务,甚至支持SQL查询。如下图所示架构:

Azu2mue.jpg!web

Ignite作为缓存

应用或者是服务先将数据存储到Ignite集群中,然后在根据需要持久化到磁盘,写到其他数据库,甚至是抽取到大数据平台,在这个架构中Ignite对上可以满足应用和服务的高速访问,对下可以支持多种数据持久化存储的需要。

2、数据和计算中心

Ignite可以作为一个高性能的数据计算中心,支持复杂的计算和分析,同时也可以作为一个数据集成总线,聚合不同来源的数据,然后做分析处理。因为Ignite是基于内存处理的,所以处理速度会很快。

三、总结

简单总结一下,Ignite以内存为中心的架构设计在性能方面有很强的表现,可以作为缓存为应用和服务加速,同时支持原生持久化的分布式内存数据库、事务和Key-Value存储、分布式计算框架、易于与各种技术集成、支持机器学习等,还提供了完整的多语言API支持。

Ignite融合了分布式、关系型数据库、高速缓存的特点,对于目前的高并发、大数据量的互联网级应用提供了强有力的支撑,在技术选型时可以综合考虑,采用Ignite集群来提升系统性能。

作者丨攻城狮Bilbo

来源丨https://www.toutiao.com/i6813016271303475723

dbaplus社群欢迎广大技术人员投稿,投稿邮箱:[email protected]

从过去40年至今,数据库的形态基本经历了传统商业数据库、开源数据库到云原生数据库的演进过程。云时代下数据库将如何革新与创变?企业核心数据库迁移与建设如何安全平稳展开?来 Gdevops全球敏捷运维峰会北京站 寻找答案:

  • 《All in Cloud 时代,下一代云原生数据库技术与趋势》 阿里巴巴集团副总裁/达摩院首席数据库科学家 李飞飞(飞刀)

  • 《AI和云原生时代的数据库进化之路》腾讯数据库产品中心总经理 林晓斌(丁奇)

  • 《ICBC的MySQL探索之路》 工商银行软件开发中心 魏亚东

  • 《民生银行在SQL审核方面的探索和实践》 民生银行资深数据库专家 李宁宁

  • 《OceanBase分布式数据库在西安银行的落地和实践》 蚂蚁金服P9资深专家/ OceanBase 核心负责人 蒋志勇

  • 《金融行业MySQL高可用实践》 爱可生技术总监 明溪源

让我们 9月11日在北京 共同眺望数据库发展变革更长远的未来!

AbquQbi.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK