发布日期:2024-11-23 05:50 点击次数:125
中枢接口和类
ResourceManager
ResourceManager 是 seata 的过失组件之一,RM 认真处理分支数据资源的事务。
AbstractResourceManager 已毕 ResourceManager 提供模板法子。DefaultResourceManager 适配整个的 ResourceManager,整个法子调用皆委派给对应认真实 ResourceManager 处理。
DataSourceManager
此为 AT 模式中枢处理器,DataSourceManager 袭取 AbstractResourceManager,处理数据库 Resouce 的注册,提交以及回滚等。
AsyncWorker
DataSourceManager 事务提交委派给 AsyncWorker 进行提交的,因为皆顺利了,无需回滚顺利的数据,只需要删除生成的操作日记就行,给与异步气象,升迁后果。
io.seata.rm.datasource.AsyncWorker#doBranchCommitsUndoLogManagerFactory.getUndoLogManager(dataSourceProxy.getDbType).batchDeleteUndoLog(xids, branchIds, conn);
UndoLogManager
TransactionManager
DefaultTransactionManager
TransactionManagerHolder 为创建单例 TransactionManager 的工场,不错使用 EnhancedServiceLoader 的 spi 机制加载自界说的类,默许为DefaultTransactionManager。
GlobalTransaction
GlobalTransaction 接口提供给用户开缘由务,提交,回滚,得回现象等法子。
DefaultGlobalTransaction
DefaultGlobalTransaction 是 GlobalTransaction 接口的默许已毕,它捏有 TransactionManager 对象,默许开缘由务超频繁间为 60 秒,默许称号为 default,因为调用者的业务法子可能多重嵌套创建多个 GlobalTransaction 对象开缘由务法子,因此 GlobalTransaction 有 GlobalTransactionRole 脚色属性,唯独Launcher 脚色的才有开启、提交、回滚事务的权益。
GlobalTransactionContext
GlobalTransactionContext 为操作 GlobalTransaction 的器用类,提供创建新的 GlobalTransaction,得回现时哨程有的 GlobalTransaction 等法子。
GlobalTransactionScanner
GlobalTransactionScanner 袭取 AbstractAutoProxyCreator 类,即已毕了 SmartInstantiationAwareBeanPostProcessor 接口,会在 spring 容器启动开动化bean 的时刻,对 bean 进行代理操作。wrapIfNecessary 为袭取父类代理 bean 的中枢法子,要是竖立了 service.disableGlobalTransaction 为 false 属性则注解不成效径直复返,不然对 GlobalTransactional 或 GlobalLock 的法子进行阻止代理。
GlobalTransactionalInterceptor
GlobalTransactionalInterceptor 已毕 aop 的 MethodInterceptor 接口,对有 @GlobalTransactional 或 GlobalLock 注解的法子进行代理。
TransactionalTemplate
TransactionalTemplate 模板类提供了一个开缘由务,引申业务,顺利提交和失败回滚的模板法子 execute(TransactionalExecutor business)。
try { // 2. If the tx role is 'GlobalTransactionRole.Launcher', send the request of beginTransaction to TC, // else do nothing. Of course, the hooks will still be triggered. beginTransaction(txInfo, tx); Object rs; try { // Do Your Business rs = business.execute; } catch (Throwable ex) { // 3. The needed business exception to rollback. completeTransactionAfterThrowing(txInfo, tx, ex); throw ex; } // 4. everything is fine, commit. commitTransaction(tx); return rs;} finally { //5. clear resumeGlobalLockConfig(previousConfig); triggerAfterCompletion; cleanUp;}
Resource
Resource 能被 ResourceManager 处理况兼好像关联 GlobalTransaction。
DataSourceProxy
DataSourceProxy 已毕 Resource 接口,BranchType 为 AT 自动模式。它袭取 AbstractDataSourceProxy 代理类,整个的 DataSource 关系的法子调用传入的targetDataSource 代理类的法子,除了创建 connection 法子为创建 ConnectionProxy 代理类。对象开动化时得回衔接的 jdbcUrl 手脚 resourceId,并注册至DefaultResourceManager 进行处理。同期还提供得回原始衔接不被代理的 getPlainConnection 法子。
ExecuteTemplate
ExecuteTemplate 为具体 statement 的 execute,AG真人百家乐下载executeQuery 和 executeUpdate 引申提供模板法子。
Executor
SQLRecognizer
SQLRecognizer 识别 sql 类型,得回表名,表别称以及原生 sql
UndoExecutorFactory
UndoExecutorFactory 证明 sqlType 生成对应的 AbstractUndoExecutor。
UndoExecutor 为生成引申 undoSql 的中枢。要是全局事务回滚,它会证明 beforeImage 和 afterImage 以及 sql 类型生成对应的反向 sql 引申回滚数据,并添加脏数据校验机制,使回滚数据愈加可靠。
DefaultCoordinator
DefaultCoordinator 即为 TC,全局事务默许的事务合营器。它袭取 AbstractTCInboundHandler 接口,为 TC 继承 RM 和 TM 的 request 肯求数据,是进行相应处理的处理器。已毕 TransactionMessageHandler 接口,行止理收到的 RPC 信息。已毕 ResourceManagerInbound 接口,发送至 RM 的 branchCommit,branchRollback 肯求。
Core
Core 接口为 seata 处理全局事务合营器 TC 的中枢处理器,它袭取 ResourceManagerOutbound 接口,接纳来自 RM 的 rpc 收集肯求 (branchRegister,branchReport,lockQuery)。同期袭取 TransactionManager 接口,接纳来自 TM 的 rpc 收集肯求(begin, commit,rollback,getStatus),另外提供提供 3 个接口法子。
GlobalSession
GlobalSession 是 seata 合营器 DefaultCoordinator 处理爱戴的过失部件,当用户开启全局散播式事务,TM 调用 begin 法子肯求至 TC,TC 则创建GlobalSession 实例对象,复返唯独的 xid。它已毕 SessionLifecycle 接口,提供 begin,changeStatus,changeBranchStatus,addBranch,removeBranch 等操作 session 和 branchSession 的法子。
BranchSession
BranchSession 为分支 session,处理分支数据,受 globalSession 颐养改变处理,它的 lock 和 unlock 法子由 lockManger 已毕。
LockManager
DefaultLockManager 是 LockManager 的默许已毕,它得回 branchSession 的 lockKey,转机成 List,委派 Locker 进行处理。
Locker
Locker 接口提供证明行数据得回锁威斯尼斯人AG百家乐,开释锁,是否锁住和断根整个锁的法子。