Skip to main content

Crate dtmrs_server

Crate dtmrs_server 

Source
Expand description

TC 的可复用部分。做成 lib 是为了让集成测试能直接驱动推进器 —— bin crate 是不能被 tests/ import 的。

两个协议层都放在这儿httpgrpc),理由同上:它们早先一个在 这里、一个在 bin crate 的 main.rs 里,结果 gRPC 层有 86% 覆盖率而 HTTP 层 是 0% —— 而「两边不许漂移」恰恰是这个项目最要紧的结构约束之一。 现在两边都能被 tests/ 拿到,可以用同一组用例做等价性测试。

Modules§

api
TC 的对外操作,与协议无关
auth
管理台的登录保护。
driver
事务推进器:把状态机的决策落成真实的 HTTP 调用和状态更新。
embedded
嵌入式 TC —— 把事务协调器当库链进你自己的进程,不需要单独部署一个服务
grpc
gRPC 支持。两个方向都有:
http
HTTP 协议层:把 HTTP 请求翻译成 Api 调用,再把结果翻译成 DTM 的应答格式。
registry
进程内分支注册表 —— 嵌入式模式的核心。
workflow
workflow 模式:把事务流程写成一个普通函数,崩溃后从断点续跑。

Functions§

msg_rows
二阶段消息:只有正向分支,没有补偿
saga_rows
把一组 SAGA 步骤展开成“1 个全局事务 + 2N 个分支“。
tcc_rows
TCC:prepare 只建全局事务,分支是客户端在 try 阶段动态登记的Store::register_branch)。所以这里不产生任何分支行。