Ignite
Ignite 整体来说对事务的支持还不完善,具体来说,在键 - 值 API 层面,有完善的事务机制,主要原理来自于经过优化的二阶段提交协议,但是 SQL 层面的 DML 语句,还不支持事务,未来版本会解决该问题。
在计算层面,因为支持丰富的编程接口,也可以非常容易地与各种开源的 ORM 框架集成,所以也可以方便地对事务进行细粒度的控制,比如 CRUD,都是没问题的。
Spark
SparkSQL 本身并不提供事务机制。Spark 本身也不适用于 RDBMS 的细粒度数据维护,RDBMS 对于 Spark 来说,只是数据的一个来源和存储地之一,通常都是批量操作,如果批量操作失败,Spark 有容错机制可以重来,保证整体的一致性。
5.5. 流计算
Spark 有 Spark Streaming,Ignite 也支持流数据处理。
Ignite
Ignite 可以与主流的流处理技术和框架进行集成,比如 Kafka、Camel、Storm 或者 JMS,提供可扩展和容错的能力,流处理技术为 Ignite 提供了一种数据加载机制,针对流式数据,Ignite 也提供了各种的处理和查询功能。Ignite 社区官方提供了 10 种流处理技术的集成实现,利用统一的 API,开发者也可以自行开发流处理技术实现。Ignite 为所有流入 Ignite 的数据以可扩展和容错的方式提供至少一次保证。
Spark
Spark Streaming 是基于 Spark 的流式批处理引擎,其基本原理是把输入数据以某一时间间隔批量的处理。即以时间为单位切分数据流,每个切片内的数据对应一个 RDD,进而可以采用 Spark 引擎进行快速计算。其同样支持众多的数据源,内部的数据表示形式为 DStream。Spark Streaming 吞吐量高,可以做复杂的业务逻辑,但是秒级别的延迟是否符合业务需求,需要确认。Spark Streaming 可以与 Spark 其他技术完美集成,包括 SparkML、SparkSQL 等。
