2015年开源到Github,同年成为Apache顶级项目,支持Java、.Net、C++、Scala。简而言之,是一个比Redis、Spark、Storm更为快速的实时-分布式-内存-支持事务-支持SQL的框架。是Alluxio(前身Tachyon)的挑战者。缺点很明显:未见生产级应用,实操资料很少,近乎只有源码和API。
1、Advanced Clustering
通过心跳服务自动发现。从而:
(1)加节点无需重启(支持CacheRebalanceMode);
(2)获取度量指标(如CPU负载、使用内存等);
(3)自修复(自动重连,慢客户端会被自动踢出);
(4)容错性(故障节点的数据也会被自动传播到网格内的其他节点,至少一次保证:Ignite保证只要有一个节点存在,任务就不会丢失)
(5)动态负载平衡(通过LoadBalancingSpi实现可插拔,ExecutorService接口实现动态平衡计算);
2、Data Grid
in-memorydistributed key-value store(可理解为distributed partitioned hash map),using a pluggable hashingalgorithm。从而:
(1)加节点即加缓存;
(2)ACID数据一致性;
(3)支持JCache规范(使用IgniteCache接口实现);
(4)支持Hibernate L2 Cache;
(5)支持内存级数据自动分区(允许在内存内缓存TB级的数据);
(6)近缓存(本地客户端侧的缓存,他会存储最近和最频繁访问的数据,“内网中的CDN”);
(7)支持off-heap memory(支持堆内和堆外两种模式,堆外存储可以克服JVM垃圾回收(gc)导致的长时间暂停,堆外提供堆外索引和分层存储,分层存储是指冷数据按堆内->堆外->磁盘分层移动);
(8)支持乐观锁;
(9)Write-Through和 Read-Through通写通读(缓存数据更新会逐条或批次同步到数据库,请求的数据在缓存中不可用时自动从数据库中拉取);
(10)Data Loading,initializing cache dataon startup
3、SQL Grid
(1)支持标准SQL(支持基于内存分布式join);
(2)支持执行计划;
(3)Text Query(query cache object ongiven value – new TextQuery(Person.class, "Master"))
(4)continuous queries(持续查询是指执行查询后又想持续的获得之前的查询结果的数据更新通知,其基于CacheEntryUpdatedListener接口实现);
4、Streaming & CEP
(1)支持event window滑动窗口;
(2)支持接入Flume、Kafka、Storm数据;
5、Compute Grid
通过一组API实现分布式计算处理。
(1) ForkJoin处理(纯MapReduce并不是为了性能而构建,轻量级MapReduce,MR的简化API);
(2) 作业调度,支持LRU、FIFO、随机、优先级甚至磨洋工;
6、Service Grid
在集群中部署各种单例服务,如分布式计数器。
7、Ignite File System
Ignite文件系统(IGFS),IGFS提供了和Hadoop HDFS类似的功能,但是仅仅在内存内部。
(1) IGFS实现了Hadoop的文件系统API,并且可以透明地加入Hadoop或者Spark应用;
(2) IGFS也可以在另一个Hadoop文件系统上部署为一个缓存层(应用通写通读技术)。
(3) 自带Hadoop,也支持CDH和HDP。
8、Data Structures
支持复杂数据结构。
9、其他
(1)包含Ignite Web控制台;
(2)支持Spark Shared RDDs,使Spark job在Ignite上运行(IgniteRDD在执行SQL查询时比Spark原生RDD或者DataFrame有百倍的性能提升);
(3)支持混合云(Docker、AWS、Google Compute Engine),也支持Mesos、Yarn;
参考:
https://ignite.apache.org/
中文说明:https://www.zybuluo.com/liyuj/note/293596
比较:http://www.infoq.com/cn/articles/apache-ignite-explorer
API:https://ignite.apache.org/releases/1.9.0/javadoc/
例子:https://github.com/apache/ignite/tree/master/examples(留意config)
其他例子:https://dzone.com/articles/getting-started-with-apache-ignite
http://gridgain.blogspot.jp/2015/04/apache-ignite-word-count-streaming.html