Orleans 事务系统时序图

只读事务时序图

客户端TransactionAgentTransactionResource存储层StartTransaction(readOnly=true)检查过载状态生成TransactionId创建TransactionInfo返回TransactionInfoPerformRead(readFunction)获取读锁读取状态数据返回状态返回读取结果CommitReadOnly()CommitReadOnly(transactionId, accessCount, timestamp)验证锁状态合并时间戳释放读锁返回TransactionalStatus.Ok事务提交成功客户端TransactionAgentTransactionResource存储层

读写事务时序图

客户端TransactionAgentTransactionManagerTransactionResource1TransactionResource2存储层StartTransaction(readOnly=false)检查过载状态生成TransactionId创建TransactionInfo返回TransactionInfoPerformUpdate(updateFunction)获取写锁更新状态数据更新成功返回更新结果PerformUpdate(updateFunction)获取写锁更新状态数据更新成功返回更新结果Resolve(transactionInfo)准备阶段 (Prepare Phase)Prepare(transactionId, accessCount, timestamp, manager)Prepare(transactionId, accessCount, timestamp, manager)PrepareAndCommit(transactionId, accessCount, timestamp, writeResources, totalResources)验证锁状态设置事务记录等待所有参与者准备完成Prepared(transactionId, timestamp, resource, status)Prepared(transactionId, timestamp, resource, status)提交阶段 (Commit Phase)所有参与者准备完成Confirm(transactionId, timestamp)Confirm(transactionId, timestamp)持久化状态变更持久化状态变更确认提交完成确认提交完成返回TransactionalStatus.Ok事务提交成功客户端TransactionAgentTransactionManagerTransactionResource1TransactionResource2存储层

事务中止时序图

客户端TransactionAgentTransactionManagerTransactionResource存储层StartTransaction()返回TransactionInfoPerformUpdate(updateFunction)获取写锁更新状态数据更新成功返回更新结果发生异常或超时Resolve(transactionInfo)Prepare(transactionId, accessCount, timestamp, manager)PrepareAndCommit(transactionId, accessCount, timestamp, writeResources, totalResources)验证锁状态锁验证失败或超时Abort(transactionId)回滚状态变更释放写锁中止完成返回TransactionalStatus.Abort事务中止异常客户端TransactionAgentTransactionManagerTransactionResource存储层

分布式事务协调时序图

客户端TransactionAgent1TransactionAgent2TransactionManagerTransactionResource1TransactionResource2存储层1存储层2StartTransaction()返回TransactionInfoPerformUpdate(updateFunction)更新状态数据更新成功返回更新结果PerformUpdate(updateFunction)更新状态数据更新成功返回更新结果Resolve(transactionInfo)分布式协调协调事务参与者选择事务管理器两阶段提交Prepare(transactionId, accessCount, timestamp, manager)Prepare(transactionId, accessCount, timestamp, manager)准备状态变更准备状态变更Prepared(transactionId, timestamp, resource, status)Prepared(transactionId, timestamp, resource, status)Confirm(transactionId, timestamp)Confirm(transactionId, timestamp)提交状态变更提交状态变更确认提交完成确认提交完成返回TransactionalStatus.Ok分布式事务提交成功客户端TransactionAgent1TransactionAgent2TransactionManagerTransactionResource1TransactionResource2存储层1存储层2

锁管理时序图

事务1事务2事务3ReadWriteLockTransactionQueue并发事务场景请求读锁检查锁状态锁可用授予读锁请求读锁检查锁状态读锁可共享授予读锁请求写锁检查锁状态写锁需等待等待锁释放释放读锁更新锁状态锁状态更新释放读锁更新锁状态锁状态更新授予写锁执行写操作释放写锁事务1事务2事务3ReadWriteLockTransactionQueue

存储持久化时序图

TransactionManagerTransactionalStateStorage存储后端TransactionQueueStore(expectedETag, metadata, statesToPrepare, commitUpTo, abortAfter)验证ETag处理中止操作处理准备操作处理提交操作批量写入操作持久化数据写入成功更新队列状态清理已完成事务状态更新完成返回新的ETagTransactionManagerTransactionalStateStorage存储后端TransactionQueue

过载检测时序图

客户端TransactionAgentOverloadDetectorStatisticsStartTransaction()IsOverloaded()获取当前统计信息返回TPS数据计算聚合TPS检查是否超过限制返回false创建新事务返回TransactionInfo返回true记录限流统计抛出OrleansTransactionOverloadExceptionalt[未过载][已过载]客户端TransactionAgentOverloadDetectorStatistics

时间同步时序图

TransactionAgent1TransactionAgent2CausalClock1CausalClock2系统时钟UtcNow()获取当前时间返回时间戳返回时间戳T1UtcNow()获取当前时间返回时间戳返回时间戳T2事务协调发送事务信息(时间戳T1)MergeUtcNow(T1)比较T1和T2选择较大时间戳返回合并后时间戳发送事务信息(合并时间戳)MergeUtcNow(合并时间戳)更新本地时钟返回最终时间戳TransactionAgent1TransactionAgent2CausalClock1CausalClock2系统时钟

这些时序图详细展示了Orleans事务系统的各种执行场景,包括:

  1. 只读事务:简单的单阶段提交
  2. 读写事务:完整的两阶段提交
  3. 事务中止:异常处理和回滚
  4. 分布式协调:跨多个节点的事务协调
  5. 锁管理:并发控制和锁竞争
  6. 存储持久化:数据持久化流程
  7. 过载检测:系统保护机制
  8. 时间同步:分布式时间协调

每个时序图都展示了相关组件之间的交互细节,有助于理解Orleans事务系统的内部工作原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloworddm

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值