从零开始写一个分布式事务框架(三)-事务记录
事务记录是用来记录每笔分布式事务状态的记录以及事务中各个分支事务状态的记录,需要在实际事务操作发生前,先写入到事务记录表,再进行事务操作,如果遇到异常情况,就可以根据存储的事务记录,通过二阶段接口进行分布式事务的恢复,来保证分布式事务的最终一致性。
这种数据恢复的思路也叫做WAL(Write-Ahead-Log) 预写式日志 ,该机制用于数据的容错和恢复,在数据写入到数据库之前,先写入到日志,再将日志记录变更到存储器中。
我们使用数据库来进行事务记录的存储,需要设计主事务记录表以及分支事务记录表。
主事务记录
主事务记录需要记录事务的id,事务的状态,事务发起的基本信息,还需要有能够满足补偿重试逻辑的相关信息,根据这些需要我们设计出如下表结构以及对应的Java数据结构:
表结构
|
|
Java数据结构
|
|
|
|
分支事务记录
分支事务记录需要记录主事务的id,分支名称,分支事务的状态,分支事务基本信息,根据这些需要我们设计出如下表结构以及对应的Java数据结构:
表结构
|
|
Java数据结构
|
|
|
|
基于定义的主事务记录和分支事务记录的数据结构,通过ActivityRepository
和 ActionRepository
接口,进行事务记录的读写操作。