Skip to main content

Crate dtmrs_core

Crate dtmrs_core 

Source
Expand description

类型与状态机 —— 纯逻辑,不碰 I/O。

分布式事务的 bug 绝大多数在状态迁移上,所以把这层从存储和网络里隔离出来, 可以纯单元测试覆盖。

Re-exports§

pub use dialect::Backend;

Modules§

dialect
方言层 —— 一套 SQL 模板跑 sqlite / postgres / mysql。

Structs§

RetryPolicy
重试退避策略。
SagaStep
一个 SAGA 步骤:正向动作 + 对应补偿 + 这一步的业务数据

Enums§

Advance
推进全局事务后,状态机给出的下一步指令
BranchOp
分支操作类型。跟 DTM 的字符串保持一致,方便客户端互通。
BranchResult
分支被调用后的结论。这四态的区分是整个系统的命门。
BranchStatus
GlobalStatus
TransType

Constants§

GRPC_ABORTED
业务明确要求回滚。gRPC 侧的 409
GRPC_FAILED_PRECONDITION
还在处理中。gRPC 侧的 425
GRPC_OK
gRPC 标准状态码。只列用得上的三个,其余一律走 _ => Unknown

Functions§

msg_advance
二阶段消息推进决策。
next_interval
用默认策略退避(10s 起、300s 封顶)
next_interval_with
指数退避:initial → ×2 → … → 封顶 max
saga_advance
SAGA 推进决策。不碰 I/O,所以可以穷举测试。
tcc_advance
TCC 推进决策。
workflow_advance
workflow 推进决策。
xa_advance
XA 推进决策。