Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DYNAMIC ADJUSTMENT DGRADE #3

Open
Charlie17Li opened this issue Feb 12, 2023 · 0 comments
Open

DYNAMIC ADJUSTMENT DGRADE #3

Charlie17Li opened this issue Feb 12, 2023 · 0 comments

Comments

@Charlie17Li
Copy link
Owner

Charlie17Li commented Feb 12, 2023

DYNAMIC ADJUSTMENT DGRADE

名词约定

TC 异常:TM 执行「Begin、Commit、Rollback」出现故障

TC 故障:TC 异常次数达到阈值

背景

当 TC 遇到故障时或者和 TC 通信出现问题会导致在 TM 执行「Begin、Commit、Rollback」等操作执行失败,从而整个事务也执行失败。

问题

值得注意的是,TM 在执行上述三个操作的时候,会因为失败而多次重试,并且过程都是同步的,即阻塞

解决

当 TC 出现问题或者连接不上 TC 时(即TC异常),分布式事务是会执行失败的。为了避免 TC故障导致 TM 执行无效的操作,现支持动态调整服务级别,即出现TC故障时,暂时关闭全局分布式事务,直到TC恢复正常

设计总共分为两个部分:

  1. 在 Client 初始化的时候开启服务检查,核心机制就是定时检查 TM 执行「Begin、Commit」是否能成功
  2. 每次进入事务时,检查TC服务是否正常
    1. 如果TC正常,则开始注册全局事务并得到XID,当Begin、CommitOrRollback 发生失败时,则查看是否是TC异常,如果是则进行计数,直到达到阈值则标记为TC故障
    2. 如果TC故障,则直接执行业务逻辑,而不走注册事务逻辑

细节

01 在整个执行过程中,会发生非常多的异常,什么情况才算做是 TC 异常?

todo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant