DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

JDTX distributed transaction midwares

原文链接

在高并发的性能至上场景中,基于 XA 协议两阶段提交类型的分布式事务

基于 BASE 事务要素的事务则称为柔性事务。 BASE 是基本可用、柔性状态和最终一致性这 3 个要素的缩写

设计目标是强一致(支持 ACID 的事务原义)、高性能(甚至强于本地事务)、1PC(完全摒弃两阶段提交和两阶段锁)的完全分布式事务中间件

image-20191107235335482

将在事务中的数据(称之为活跃数据)和不在事务中的数据(称之为落盘数据)分离。

活跃数据在落盘至预写日志系统(WAL)之后,并将数据保存至自研的多版本快照(MVCC)内存引擎中。

落盘数据则是通过异步刷盘的方式,将 MVCC 引擎中的数据以流量可控的方式同步至最终的存储介质中(如:关系型数据库)

MVCC引擎可以看成一个集中式缓存

每次事务内查询都是由落盘数据 + 活跃数据归并而成。归并引擎部分参照了 LSM Tree 的设计思想。