Replies: 3 comments 1 reply
-
timestamp 字段类型调整为 datetime |
Beta Was this translation helpful? Give feedback.
1 reply
-
部署多个 Arana 节点的定时任务,考虑任务互斥情况 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
核心流程
1、正常流程:用户提交事务流程如下:
![](https://camo.githubusercontent.com/db1b81ae878191aeb0bfce0b9459d6813929a4c9ffefae969bbd556f4b42d40d/68747470733a2f2f63646e2e6e6c61726b2e636f6d2f79757175652f5f5f70756d6c2f38663237363562633131653236306363313531666133383164656263636334642e737667236c616b655f636172645f76323d65794a306558426c496a6f696348567462434973496d4e765a4755694f694a4163335268636e523162577863626c7875595856306232353162574a6c636c787558473568593352766369426349756555714f6149743177694947467a4946567a5a584a63626e4268636e527059326c77595735304946776951584a68626d46634969426863794242636d4675595678756347467964476c6a61584268626e516758434a45516a46634969426863794245516a4663626e4268636e527059326c775957353049467769524549795843496759584d675245497958473563626c787559574e3061585a686447556756584e6c636c787558473556633256794943302d49454679595735684f69446f7349506e6c4b6767596d566e615734673570613535724f5635627941355a43763559576f35624741354c714c355971685847356859335270646d46305a534242636d46755956787558473542636d46755953417450694242636d467559546f673559576f35624741354c714c35597168364b476f356f2d533559576c354c6941357032683559576f35624741354c714c35597168364b3677356232563737794d35347132356f4342354c6936346f436363335268636e526c5a4f4b416e56787558473542636d46755953417450694256633256794f69446f7635546c6d35376c68616a6c7359446b756f766c6971464a524678755847356859335270646d46305a534245516a4663626c567a5a5849674c54346751584a68626d4536494f614a702d69686a4f53346d75574b6f564e5254444663626c787559577830494f6573724f5334674f61736f65614a702d69686a4f5336692d574b6f564e52544678754943416749454679595735684943302d494552434d546f675745456755335268636e5263626c783058485242636d46755953417450694245516a4536494f614a702d69686a4f53346d75574b6f564e52544678755a57787a5a5344706e5a376e724b7a6b7549446d724b486d6961666f6f597a6b756f766c6971465455557863626c783058485242636d46755953417450694245516a4536494f614a702d69686a4f53346d75574b6f564e52544678755a57356b58473563626b52434d53417450694242636d467559546f67364c2d55355a7565356f6d6e364b474d353775543570366358473563626d526c59574e3061585a68644755675245497858473563626d467364434245516a486d6961666f6f597a6d694a446c697039636269416749434242636d46755953417450694242636d467559546f67356236413559694735705376354c714c35597168364b476f356f2d533559576c354c69413570326835613251354c714c35597168364b3677356232563737794d58467875494f654b747561416765533475754b416e484e3059584a305a575469674a3163626c783058485242636d46755953417450694256633256794f69446f7635546c6d35376c725a446b756f766c6971486d6961666f6f597a6d694a446c69703963626d56736332556752454978356f6d6e364b474d35615378364c536c584735636446783051584a68626d45674c54346751584a68626d4536494f572d674f574968756155722d5336692d574b6f656968714f61506b75574670655334674f61646f6557746b4f5336692d574b6f656975734f57396c652d386a4678636269446e6972626d6749486b754c7269674a786d59576c735a575469674a3163626c783058485242636d46755953417450694256633256794f69446f7635546c6d35376c725a446b756f766c6971486d6961666f6f597a6c704c486f744b5663626d56755a4678755847356862485167357257423536694c355a4b4d35367973354c6941357032685531464d354c6941357143333737794d353579423535576c36594f6f35596947357257423536694c4c6934754c6c7875494341674946567a5a5849674c54346751584a68626d4536494f614a702d69686a4f53346d75574b6f564e52544449754c6934754c693563626d56755a467875584735756233526c49484a705a3268304947396d4946567a5a584936494f695f6d656d486a4f5742682d69757675614a674f6163696557746b4f5336692d574b6f656d447665614a702d69686a4f61496b4f574b6e31787558473556633256794943302d49454679595735684f69446f7349506e6c4b67675932397462576c30494f61577565617a6c652d38694f53386f4f6d416b755746714f5778674f5336692d574b6f556c453737794a58473563626b4679595735684943302d49454679595735684f69446d6d37546d6c72446c68616a6c7359446b756f766c6971486e6972626d6749486b754c7269674a786a62323174615852306157356e346f436458473563626b4679595735684943302d49454679595735684f69446d6f4c6e6d6a61376c68616a6c7359446b756f766c6971464a524f2d386a4f61667065614a767557487575614a674f6163696557746b4f5336692d574b6f5678755847356859335270646d46305a534245516a4663626c787551584a68626d45674c543467524549784f6942595153426c626d51676548683458473563626b4679595735684943302d494552434d546f675745456763484a6c634746795a53423465486863626c787551584a68626d45674c54346751584a68626d4536494f5777687557746b4f5336692d574b6f54486e6972626d6749486e7661376b754c7269674a7877636d567759584a6c5a4f4b416e5678755847356859335270646d46305a534245516a4a63626c787551584a68626d45674c543467524549794f6942595153426c626d51676548683458473563626b4679595735684943302d494552434d6a6f675745456763484a6c634746795a53423465486863626c787551584a68626d45674c54346751584a68626d4536494f5777687557746b4f5336692d574b6f544c6e6972626d6749486e7661376b754c7269674a7877636d567759584a6c5a4f4b416e56787558473542636d46755953417450694245516a45364946684249474e76625731706443423465486863626c787551584a68626d45674c54346751584a68626d4536494f5777687557746b4f5336692d574b6f54486e6972626d6749486e7661376b754c7269674a786a62323174615852305a575469674a3163626c78755a47566859335270646d46305a534245516a4663626c787551584a68626d45674c543467524549794f6942595153426a62323174615851676548683458473563626b4679595735684943302d49454679595735684f69446c7349626c725a446b756f766c6971457935347132356f434235373275354c6936346f43635932397462576c306447566b346f436458473563626d526c59574e3061585a68644755675245497958473563626b4679595735684943302d49454679595735684f69446c7349626c68616a6c7359446b756f766c6971486e6972626d6749486e7661376b754c7269674a786a62323174615852305a575469674a3163626c787551584a68626d45674c54346756584e6c636a6f67364c2d55355a7565354c714c35597168356f2d51354c716b356f69513559716658473563626c7875514756755a48567462434973496e567962434936496d68306448427a4f693876593252754c6d357359584a724c6d4e7662533935645846315a53396658334231625777764f4759794e7a5931596d4d784d5755794e6a426a597a45314d575a684d7a67785a47566959324e6a4e47517563335a6e49697769615751694f694a345655685364434973496d3168636d64706269493665794a30623341694f6e527964575573496d4a76644852766253493664484a315a583073496d4e68636d51694f694a6b6157466e636d4674496e303d)
2、正常流程:用户回滚事务流程如下:
![](https://camo.githubusercontent.com/ab06a186c4980d45b9be95c23c03baf83f4535983d091516110cf1c68c5dbade/68747470733a2f2f63646e2e6e6c61726b2e636f6d2f79757175652f5f5f70756d6c2f32633234386131636565393231396633306538313337313531373164633765652e737667236c616b655f636172645f76323d65794a306558426c496a6f696348567462434973496d4e765a4755694f694a4163335268636e523162577863626c7875595856306232353162574a6c636c787558473568593352766369426349756555714f6149743177694947467a4946567a5a584a63626e4268636e527059326c77595735304946776951584a68626d46634969426863794242636d4675595678756347467964476c6a61584268626e516758434a45516a46634969426863794245516a4663626c78755847356859335270646d46305a5342566332567958473563626c567a5a5849674c54346751584a68626d4536494f6977672d6555714342695a5764706269446d6c726e6d7335586c7649446c6b4b5f6c68616a6c7359446b756f766c69714663626d466a64476c325958526c494546795957356858473563626b4679595735684943302d49454679595735684f69446c68616a6c7359446b756f766c6971486f6f616a6d6a354c6c6861586b7549446d6e61486c68616a6c7359446b756f766c6971486f7272446c765a587676497a6e6972626d6749486b754c7269674a787a644746796447566b346f436458473563626b4679595735684943302d4946567a5a584936494f695f6c4f57626e755746714f5778674f5336692d574b6f556c4558473563626d466a64476c325958526c494552434d56787556584e6c6369417450694242636d467559546f67356f6d6e364b474d354c6961355971685531464d4d567875584735686248516735367973354c694135717968356f6d6e364b474d354c714c355971685531464d584734674943416751584a68626d45674c543467524549784f6942595153425464474679644678755848526364454679595735684943302d494552434d546f67356f6d6e364b474d354c6961355971685531464d5847356c62484e6c494f6d646e756573724f5334674f61736f65614a702d69686a4f5336692d574b6f564e52544678755848526364454679595735684943302d494552434d546f67356f6d6e364b474d354c6961355971685531464d5847356c626d5263626c7875524549784943302d49454679595735684f69446f7635546c6d35376d6961666f6f597a6e7535506d6e707863626c78755a47566859335270646d46305a534245516a4663626c787559577830494552434d65614a702d69686a4f61496b4f574b6e3178754943416749454679595735684943302d49454679595735684f69446c766f446c6949626d6c4b5f6b756f766c6971486f6f616a6d6a354c6c6861586b7549446d6e61486c725a446b756f766c6971486f7272446c765a5876764978635847346735347132356f4342354c6936346f436363335268636e526c5a4f4b416e5678755848526364454679595735684943302d4946567a5a584936494f695f6c4f57626e7557746b4f5336692d574b6f65614a702d69686a4f61496b4f574b6e3178755a57787a5a534245516a486d6961666f6f597a6c704c486f744b5663626c783058485242636d46755953417450694242636d467559546f67356236413559694735705376354c714c35597168364b476f356f2d533559576c354c69413570326835613251354c714c35597168364b3677356232563737794d58467875494f654b747561416765533475754b416e475a686157786c5a4f4b416e5678755848526364454679595735684943302d4946567a5a584936494f695f6c4f57626e7557746b4f5336692d574b6f65614a702d69686a4f576b73656930705678755a57356b58473563626d46736443446d7459486e7149766c6b6f7a6e724b7a6b7549446d6e61465455557a6b7549446d6f4c667676497a6e6e49486e6c61587067366a6c6949626d7459486e714973754c693475584734674943416756584e6c6369417450694242636d467559546f67356f6d6e364b474d354c6961355971685531464d4d6934754c6934754c6c78755a57356b58473563626d357664475567636d6c6e614851676232596756584e6c636a6f67364c2d5a3659654d35594748364b362d3570794a36594f6f3559694735613251354c714c35597168356f6d6e364b474d35615378364c536c58473563626c567a5a5849674c54346751584a68626d4536494f6977672d65557143427962327873596d466a6179446d6c726e6d7335587676496a6b764b4470674a4c6c68616a6c7359446b756f766c6971464a524f2d386956787558473542636d46755953417450694242636d467559546f6735707530357061773559576f35624741354c714c3559716835347132356f4342354c6936346f4363636d397362474a6859327470626d6669674a3163626c787551584a68626d45674c54346751584a68626d4536494f61677565614e72755746714f5778674f5336692d574b6f556c453737794d35702d6c356f6d2d35596536356f6d413570794a35613251354c714c3559716858473563626c787562473976634344706759336c6a6f626d6959446d6e496e6e6d6f546c725a446b756f766c69714663626c783059574e3061585a6864475567524549785847356364454679595735684943302d494552434d546f6757454567636d397362474a6859327367654868345847356364454679595735684943302d49454679595735684f69446c7349626c725a446b756f766c6971457835347132356f434235373275354c6936346f4363636d397362474a685932746c5a4f4b416e5678755a57356b58473563626d526c59574e3061585a68644755675245497858473563626b4679595735684943302d49454679595735684f69446c7349626c68616a6c7359446b756f766c6971486e6972626d6749486e7661376b754c7269674a787962327873596d466a6132566b346f436458473563626b4679595735684943302d4946567a5a584936494f695f6c4f57626e755336692d574b6f6557626e7561376d7561496b4f574b6e317875584735415a57356b645731734969776964584a73496a6f696148523063484d364c79396a5a473475626d7868636d7375593239744c336c316358566c4c3139666348567462433879597a49304f4745785932566c4f5449784f57597a4d4755344d544d334d5455784e7a466b597a646c5a53357a646d63694c434a705a434936496d6834656c564849697769625746795a326c75496a7037496e52766343493664484a315a537769596d393064473974496a7030636e566c66537769593246795a434936496d5270595764795957306966513d3d)
3、异常流程:事务处于中间状态
![](https://camo.githubusercontent.com/6cc6f42cf2f650e35e60b90a83ffac18d3d1d031d9ae219b279b6681e47ceae8/68747470733a2f2f63646e2e6e6c61726b2e636f6d2f79757175652f5f5f70756d6c2f35636266643963616565646464366466346633386431343563303662326337302e737667236c616b655f636172645f76323d65794a306558426c496a6f696348567462434973496d4e765a4755694f694a4163335268636e523162577863626c7875595856306232353162574a6c636c787558473563626e4268636e527059326c77595735304946776951584a68626d45675157646c626e52634969426863794242636d4675595678756347467964476c6a61584268626e516758434a45516a46634969426863794245516a4663626c78755847356859335270646d46305a534242636d46755956787558473542636d46755953417450694242636d467559546f6735702d6c356f6d2d354c6974365a653035347132356f434234344342364c614635706532353571453559576f35624741354c714c35597168494678636269416f365a32655932397462576c306447566b356f6957636d397362474a685932746c5a4f654b7475614167536c63626c787562473976634344706759336c6a6f626d6959446d6e496e6e6d6f546c68616a6c7359446b756f766c69714663626c787551584a68626d45674c54346751584a68626d4536494f614a7675574875755746714f5778674f5336692d574b6f655334692d614a674f61636965576b684f53366a75533472656d58744f654b7475614167656561684f57746b4f5336692d574b6f534263584734674b4f6d646e6d4e76625731706448526c5a4f4f4167584a766247786959574e725a57546d694a5a6d59576c735a57546e6972626d6749457058473563626c787562473976634344706759336c6a6f626d6959446d6e496e6e6d6f546c725a446b756f766c69714663626c783059574e3061585a6864475567524549785847356364454679595735684943302d494552434d546f6757454567556b564454315a465569423465486863626c7830524549784943302d49454679595735684f69446f7635546c6d35376b756f766c6971486e6d6f546e6972626d67494663626c783051584a68626d45674c543467524549784f69446c6a3548706749456757454567556d397362474a6859327367654868345847356364454679595735684943302d49454679595735684f69446d6d37546d6c72446c725a446b756f766c6971486e6972626d6749486b754c7269674a787962327873596d466a6132566b346f43645847356c626d5263626c78755a47566859335270646d46305a534245516a4663626c787551584a68626d45674c54346751584a68626d4536494f6162744f6157734f5746714f5778674f5336692d574b6f65654b747561416765533475754b416e464a766247786959574e725a575469674a3163626c78755a57356b58473563626b426c626d5231625777694c434a31636d77694f694a6f64485277637a6f764c324e6b62693575624746796179356a62323076655856786457557658313977645731734c7a566a596d5a6b4f574e685a57566b5a4751325a4759305a6a4d345a4445304e574d774e6d4979597a63774c6e4e325a794973496d6c6b496a6f69537a6c44545745694c434a7459584a6e615734694f6e736964473977496a7030636e566c4c434a6962335230623230694f6e5279645756394c434a6a59584a6b496a6f695a476c685a334a6862534a39)
如果 Arana 和 DB 通信中断,导致无法通知 DB 侧将事务及时回滚/提交,使事务一直处于中间状态,需要 Arana 对这些事务手动进行处理。Arana 中有一个 “Agent”定时任务,会定期扫描所有中间状态的事务,进行处理。
4、死锁检测
// TODO
细节设计
1、Arana 全局事务表 __arana_global_trx_log:
2、Arana 分支事务表 __arana_branch_trx_log:
3、Arana 的 Agent 本质上是一个定时任务,会定期扫描 __arana_global_trx_log 表,查找 expected_end_time 超时,并且处于非“committed”或“rollbacked”状态的全局事务,主动触发分支事务(非“committed”、“rollbacked”或“failed”)进行结束。
4、注意,__arana_global_trx_log 表和 __arana_branch_trx_log 表是属于 Arana 的系统表。
参考资料
[1] 这才是真正的分布式事务 XA 详解
https://juejin.cn/post/7096781044010991629
[2] 分布式系统事务处理:二阶段提交与三阶段提交协议解析
https://baijiahao.baidu.com/s?id=1781249550136480595&wfr=spider&for=pc
[3] 6 张图带你彻底搞懂分布式事务 XA 模式
https://developer.aliyun.com/article/783796
[4] 腾讯云TDSQL——分布式事务实现机制
https://www.modb.pro/db/109733
[5] Mysql的分布式(XA)真面目
https://blog.csdn.net/u013487071/article/details/123718874
[6] TDSQL在分布式事务阶段遇到死锁时如何处理的
https://www.cnblogs.com/tencentdb/p/15220582.html
[7] 13.3.8 XA事务
https://zhuanlan.zhihu.com/p/400930855
[8] MySQL · 特性分析 · 浅谈 MySQL 5.7 XA 事务改进
http://mysql.taobao.org/monthly/2017/09/05/
Beta Was this translation helpful? Give feedback.
All reactions