在高并发的性能至上场景中,基于 XA 协议两阶段提交类型的分布式事务
基于 BASE 事务要素的事务则称为柔性事务。 BASE 是基本可用、柔性状态和最终一致性这 3 个要素的缩写
设计目标是强一致(支持 ACID 的事务原义)、高性能(甚至强于本地事务)、1PC(完全摒弃两阶段提交和两阶段锁)的完全分布式事务中间件
将在事务中的数据(称之为活跃数据)和不在事务中的数据(称之为落盘数据)分离。
活跃数据在落盘至预写日志系统(WAL)之后,并将数据保存至自研的多版本快照(MVCC)内存引擎中。
落盘数据则是通过异步刷盘的方式,将 MVCC 引擎中的数据以流量可控的方式同步至最终的存储介质中(如:关系型数据库)
MVCC引擎可以看成一个集中式缓存
每次事务内查询都是由落盘数据 + 活跃数据归并而成。归并引擎部分参照了 LSM Tree 的设计思想。