当前位置:
文档之家› 金融级STP分布式事务技术架构
金融级STP分布式事务技术架构
14ms。但成本非常昂贵,企业根本无法使用
• 事务开始和提交从 Time Master 中获取 时间戳,在读写事务提交时,需要进行 commit-wait 2倍 True Time 误差,以保 证提交的绝对时间过期,从而导致单分区 的事务吞吐量受限
• 跨多分区事务一致性采用 2PC机制,由 Coordinator统一协调提交或回滚
我们熟知的分布式事务机制有哪些?
全局事务管理器(GTM)机制
Client
① 发起事务
④ 提交事务
② 请求事务ID 和事务快照
Coordinator ⑥ 更新预提交状态 GTM
⑧ 更新提交状态
T1
T2
③ 事务操作(ID+快照) ⑤ 预提交事务
T3
TT44 ⑦ 提交事务
tm1 commit tm2 rollback tm3 pre-commit tm4 cdporemin-cgmoimt mit
✓ 高性能:STP Client采用共享内存方式对外提供时间服务,
让逻辑时间的获取为本地调,没有任何网络开销,性能为 “纳秒”级
STP如何始终保持单调递增?
✓ STP Server 一主多备 ✓ 通过Raft协议同步ULT,并确保多数派成功 ✓ 选主时,ULT最大的节点当选主节点
✓ STP Server重启或切主时 ✓ 从本地持久化中获取保存的 ULT ✓ 获取当前的物理时间 LRT ✓ 计算新的 ULT ✓ 如果 LRT > ULT + 同步周期,则 ULT = LRT ✓ 否则 ULT = ULT + 同步周期 ✓ 通过 Raft 协议同步新的 ULT 至其它节点
• GTM为全局事务管理器,负责事务 ID的分配,全局事务状态的维护
• GTM一般为全局单点或主备节点, GTM的最大事务分配管理能力成为 整个系统的最大事务能力,扩展性 受限
• 跨节点事务的一致性采用2PC提 交,出现故障时需要从GTM进行事 务状态恢复后重试
Record1
Node
Record2
Record3
• 对相同记录的更改容易发生冲突重试。在事务 故障时,采用懒处理,需要通过锁超时、以及 事务Primary状态进行修复
• 任何事务都需要与TSO进行 1-2 次交互,性能 扩展受限
我们熟知的分布式事务机制有哪些?
Google Spanner 机制
True Time Architecture
GPS Master
金融级STP分布式事务技术架构
如何支撑数千节点扩展
巨杉数据库:9年耕耘,近百家银行及金融客户生产上线
• 国有、商业、证券、保险
全维度 金融行业覆盖
• 国内金融行业 应用最 广 的分布式数据库,已 有 近百家 金融及企
业 客户生产上线
• 适应各类 跨场景 业务
: 核心交易、数据中台、 内 容管理、实时数据服务
分布式事务面临的主要难点有哪些?
跨节点 一致性
事务跨多节点执行时, 如 何 保证在各种故障下所有 节点 都提交, 或者都回滚 ?
跨节点 隔离性
多个跨节点的事务并发执行 时, 在网络延时、访问时序 等影响下, 如何保证事务间 相互隔离,互不影响? 脏读、可重复读、幻读
扩展性
参与分布式事务的节点规模 能否水平扩展? 随着节点规模的扩展, 分布 式事务的处理能力能否线性 扩展?
cc11:loocckk 2: 1: p @A.c1
cc11:wwrritee 2: data@1 1:
• TSO 提供一个精确的、严格递增的时间戳服务
• TSO一般为全局单点或主备节点,TSO的最大时 间戳分配能力成为整个系统的最大事务能力, 扩展性受限
• 读事务跟据时间戳进行可见性判断,当碰到可 见锁时,需要等待解锁。由于事务采用异步提 交,在高并发读写冲突时,性能较低
ULT
Sync every 60 sec
DEBTP (ULT + Error)
STP Client
(LLT, LLTError)
STP Client
…
STP Client
(LLT, LLTError)
(LLT, LLTError)
Shared Memory & Local API
✓ 单调递增性:逻辑时钟始终保持单调递增,不受物理时钟
④ pre-write primary
⑧ 异 步 commitsecondary
⑦ commit primary andreturn
Buffer
A5
…
Node1
row c1:data c1:lock c1:write
A 2:
2:
2: data@1
A 1:5
1:p
1:
Buffer B3
Node2
rooww cc11:ddaataa B 2: B 1:3
Node
…
Node
• 任何事务都需要与GTM进行 2-3 次 交互,性能扩展受限
我们熟知的分布式事务机制有哪些?
Google BigTable Percolator 机制
Client
① 开始事务
④ 提交事务
Coordinator
② 获取开始时间戳 ⑥ 获取提交时间戳
TSO
③ 事务写入缓存
⑤ pre-write secondary
• 只读事务通过时间阻塞、比对数据的时间 戳和自身事务的时间戳进行可见性判断, 从而实现“外部一致性读”
Sequence Time Protocol 分布式序列时钟协议
STP是什么?能做什么?
STP Server
STP Server
Raft 协议 同步逻辑时钟
…
STP Server (Primary)
GPS Master
GPS Master
Atomic Master
Atomic Master Sync every 30 sec
Atomic Master
Computer Node
Computer Node
Computer Node
• True Time:基于GPS时钟和原子钟校时和授 时,能确保任何一个 Time Master与“全球标 准时间”基本一致,但由于网络、local clock影 响,任何 2 个节点的时间相差控制在不超时
回调影响
✓ 高可靠性:STP Server 一主多备,采用一致性 Raft 协议
同步逻辑时钟
✓ 高可用性:STP Client 与 Server之间采用
DEBTP(Dynamic Error Based Time Protocol ) 同步逻辑时 间,且 Server 与每个 Client 之间都维持独立的动态时间误 差,既可以适应网络抖动,也可以满足不同节点的复杂网络 状态。时间误差根据时间同步、网络状态进行动态调整