最近在一个新的项目技术选型的时候看到了Ignite。Ignite作为一个高性能,分布式内存计算和事务平台,解决了大规模、大数据量、高并发的企业级应用的痛点,是一个非常有潜力的技术。
Ignite对多级存储的支持主要有三种模式:内存,内存+数据库,内存+原生持久化。
内存:仅使用内存存储数据,为了保证数据不丢失,应该保证数据至少有一份备份。
内存+数据库:在数据库上层用Ignite作为缓存,这里的数据库可以是传统的数据库,例如MySQ,Oracle等。在这里Ignite的作用类似于我们常用的Ehcache,Guava Cache等,但是Ignite是分布式的且更加强大。
内存+原生持久化:Ignite本身支持持久化,可以将数据全部持久化到磁盘,同时将全部或者部分热点数据加载到内存中。
Ignite本身的持久化支持分布式,事务和SQL语句,具体持久化过程如下图所示:
持久化
持久化的核心在于Write-Ahead Log (WAL),其目的在尽快将数据更新到磁盘,并且保证在整个集群出现问题时能够恢复数据。
Ignite支持关系型数据库中的SELECT, UPDATE, INSERT, DELETE操作,甚至还支持JOIN操作。上面我们说到Ignite有三种不同模式,每种模式对SQL的支持不一样。
分布式SQL
内存模式:在这种模式下支持上述的各种SQL操作,且性能非常好。
内存+原生持久化模式:这种模式下支持上述的各种SQL操作,且并不需要把全部数据加载到内存中,Ignite的SQL引擎支持内存和硬盘的联合查询。
内存+数据库模式:这种模式不支持Ignite和数据库的联合查询,也就是说,对于一条语句查询或者更新,Ignite的SQL引擎不会分别从Ignite内存和数据库中取出满足条件的数据并且聚合后返回,这是目前做不到的。除非将外部数据库的数据全部加载到Ignite中。
Ignite可以作为一个传统的K-V存储使用,类似于我们之前常用的Redis,这里就不再赘述。
Key-Value存储
Ignite 支持分布式事务,无论是做缓存还是数据持久化到硬盘都可以保证数据的一致性。
分布式事务
Ignite支持多种分布式事务方式,主要有两段式提交和三段式提交以及Ignite本身的WAL。两段式和三段式是分布式事务常用的两种方式,不再赘述。
这里简单说下Ignite本身的WAL方式,WAL是Write-Ahead Log的简称,数据在持久化到磁盘的时候会先写到日志文件里面,然后再更新到磁盘。这种方式只支持Ignite原生的持久化方式,如果是内存+外部数据库的方式,只能选择两段式或者三段式事务。
在传统的关系型数据库或者非关系中数据库中,我们通常将数据从数据库取到客户端应用进行处理,而Ignite采用了一种不同的方式,将复杂的计算或者是SQL直接放在Ignite集群的节点上处理,将执行的结果返回给客户端应用。这样就避免了大量的数据在网络上传输。
Ignite集中处理
Ignite为构建机器学习模型提供了一套简单,弹性和有效的工具集,且不需要做数据转换。机器学习不熟悉,这里就不班门弄斧了。
Ignite支持机器学习
根据上面Ignite的特点,Ignite适合的使用场景主要有几种:
Ignite可以作为应用的缓存层甚至是直接作为数据库使用,因为Ignite不仅支持数据的内存存储,还支持持久化和事务,甚至支持SQL查询。如下图所示架构:
Ignite作为缓存
应用或者是服务先将数据存储到Ignite集群中,然后在根据需要持久化到磁盘,写到其他数据库,甚至是抽取到大数据平台,在这个架构中Ignite对上可以满足应用和服务的高速访问,对下可以支持多种数据持久化存储的需要。
Ignite可以作为一个高性能的数据计算中心,支持复杂的计算和分析,同时也可以作为一个数据集成总线,聚合不同来源的数据,然后做分析处理。因为Ignite是基于内存处理的,所以处理速度会很快。
简单总结一下,Ignite以内存为中心的架构设计在性能方面有很强的表现,可以作为缓存为应用和服务加速,同时支持原生持久化的分布式内存数据库、事务和Key-Value存储、分布式计算框架、易于与各种技术集成、支持机器学习等,还提供了完整的多语言API支持。
Ignite融合了分布式、关系型数据库、高速缓存的特点,对于目前的高并发、大数据量的互联网级应用提供了强有力的支撑,在技术选型时可以综合考虑,采用Ignite集群来提升系统性能。
《All in Cloud 时代,下一代云原生数据库技术与趋势》阿里巴巴集团副总裁/达摩院首席数据库科学家 李飞飞(飞刀)
《AI和云原生时代的数据库进化之路》腾讯数据库产品中心总经理 林晓斌(丁奇)
《ICBC的MySQL探索之路》工商银行软件开发中心 魏亚东
《民生银行在SQL审核方面的探索和实践》民生银行资深数据库专家 李宁宁
《OceanBase分布式数据库在西安银行的落地和实践》蚂蚁金服P9资深专家/OceanBase核心负责人 蒋志勇
《金融行业MySQL高可用实践》爱可生技术总监 明溪源
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721