当前位置:网站首页>TCC of distributed solutions
TCC of distributed solutions
2022-07-05 22:29:00 【Melting pole】
summary
What is? TCC Business
TCC yes Try、Confirm、Cancel Abbreviations of three words ,TCC Each branch transaction is required to implement three operations : Preprocessing Try、 confirm Confirm、 revoke Cancel.Try Do business check and resource reservation ,Confirm Do business confirmation ,Cancel To achieve a relationship with Try The reverse operation is the rollback operation .TM Initiate all branch transactions first try operation , Of any branch transaction try Operation execution failed ,TM Will initiate all branch transactions Cancel operation , if try The operation was all successful ,TM Will initiate all branch transactions Confirm operation , among Confirm/Cancel If the operation fails ,TM Will try again .
TCC There are three stages :
- Try The stage is to do business inspection ( Uniformity ) And resource reservation ( Isolation ), This stage is only a preliminary operation , It and the following Confirm Together to really form a complete business logic .
- Confirm The stage is to make a confirmation submission ,Try Start execution after all branch transactions of phase are executed successfully Confirm. Usually , use TCC Think Confirm There is no mistake in the stage . namely : Only Try success ,Confirm It must be successful . if Confirm The stage really went wrong , Need to introduce retry mechanism or manual processing .
- Cancel The phase is to cancel the branch transaction when the business execution error needs to be rolled back , Reserve resource release . Usually , use TCC Think Cancel Stage is also a certain success . if Cancel The stage really went wrong , Need to introduce retry mechanism or manual processing .
- TM Business management
TM The transaction manager can be implemented as a stand-alone service , You can also have the global transaction initiator act as TM Role ,TM Independent to be a common component , In order to consider the system structure and software reuse .
TM Generate a global transaction record when initiating a global transaction , Global transaction ID Throughout the chain of distributed transaction calls , Used to record transaction context , Track and record status , because Confirm and Cancel Failure needs to be retried , So we need to be idempotent , Idempotency refers to the same operation, no matter how many times it is requested , The results are the same .
TCC Solution
Currently on the market TCC There are many frameworks, such as the following :
( The following data collection date is 2019 year 07 month 11 Japan )
tcc-transaction:https://github.com/changmingxie/tcc-transaction
Hmily:https://github.com/dromara/hmily
ByteTCC:https://github.com/liuyangming/ByteTC
EasyTransaction:https://github.com/QNJR-GROUP/EasyTransaction
What was said in the previous section Seata Also support TCC, but Seata Of TCC Pattern configuration is relatively complex . Our goal is to understand TCC And the process of coordinated operation of affairs , So it's more of a lightweight, easy to understand framework , So... Was finally determined Hmily.
Hmily It's a high-performance distributed transaction TCC Open source framework . be based on Java Language to develop (JDK1.8), Support Dubbo,Spring Cloud etc. RPC Framework for distributed transactions . It currently supports the following features :
- Support nested transactions (Nested transaction support).
- use disruptor The framework reads and writes transaction logs asynchronously , And RPC There is no difference in the performance of the framework .
- Support SpringBoot-starter Project start , Easy to use .
- RPC Framework support :dubbo,motan,springCloud.
- Local transaction storage support :redis,mongodb,zookeeper,file,mysql.
- Transaction log serialization support :java,hessian,kryo,protostuff.
- use Aspect AOP To think in a face-to-face way Spring Seamless integration , Natural support cluster .
- RPC Transaction recovery , Timeout abnormal recovery, etc .
Hmily utilize AOP Intercept local and remote methods involved in distributed transactions , By intercepting , Transaction participants can transparently call the Try、Confirm、Cancel Method ; Pass transaction context ; And record the transaction log , Make compensation as appropriate , Retry etc. .
Hmily There is no need for transaction coordination services , But you need to provide a database (mysql/mongodb/zookeeper/redis/file) To store logs .
Hmily Realized TCC Service is the same as ordinary service , Just expose one interface , That's what it is Try Business .Confirm/cancel Business logic , Just because of global transaction commit / Rollback needs to be provided , therefore Confirm/Cancel Business only needs to be Hmily TCC Transaction framework discovery . It doesn't need to be perceived by other business services that call it .
website :https://dromara.org/website/zh-cn/docs/hmily/index.html
TCC Note that the three exception handling methods are null rollback 、 idempotent 、 Hang
Empty rollback
idempotent
Hang
边栏推荐
- The difference between MVVM and MVC
- Post-90s tester: "after joining Ali, this time, I decided not to change jobs."
- Usage Summary of scriptable object in unity
- Serializability of concurrent scheduling
- Assign the output of a command to a variable [repeat] - assigning the output of a command to a variable [duplicate]
- 點到直線的距離直線的交點及夾角
- Some tutorials install the database on ubantu so as not to occupy computer memory?
- What if the files on the USB flash disk cannot be deleted? Win11 unable to delete U disk file solution tutorial
- The statistics of leetcode simple question is the public string that has appeared once
- Search: Future Vision (moving sword)
猜你喜欢
【无标题】
Granularity of blocking of concurrency control
Solutions for unexplained downtime of MySQL services
Practice: fabric user certificate revocation operation process
科技云报道:算力网络,还需跨越几道坎?
a-tree 树的全部展开和收起
Distance entre les points et les lignes
2022软件测试工程师涨薪攻略,3年如何达到30K
Nacos 的安装与服务的注册
Golang writes the opening chapter of selenium framework
随机推荐
Solutions for unexplained downtime of MySQL services
Pl/sql basic syntax
二叉树(三)——堆排序优化、TOP K问题
Draw a red lantern with MATLAB
Distance from point to line intersection and included angle of line
The statistics of leetcode simple question is the public string that has appeared once
CA certificate trampled pit
Request preview display of binary data and Base64 format data
Nanjing: full use of electronic contracts for commercial housing sales
Granularity of blocking of concurrency control
Oracle views the data size of a table
[agc009e] eternal average - conclusion, DP
Usage Summary of scriptable object in unity
Damn, window in ie open()
QT creator 7 beta release
FBO and RBO disappeared in webgpu
boundary IoU 的计算方式
Analysis of the problem that the cookie value in PHP contains a plus sign (+) and becomes a space
Post-90s tester: "after joining Ali, this time, I decided not to change jobs."
New 3D particle function in QT 6.3