当前位置:网站首页>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
边栏推荐
- Distance from point to line intersection and included angle of line
- 科技云报道:算力网络,还需跨越几道坎?
- Alternating merging strings of leetcode simple questions
- MCU case -int0 and INT1 interrupt count
- Some tutorials install the database on ubantu so as not to occupy computer memory?
- 2022软件测试工程师涨薪攻略,3年如何达到30K
- Go语言学习教程(十五)
- Performance testing of software testing
- Granularity of blocking of concurrency control
- Kubernetes Administrator certification (CKA) exam notes (IV)
猜你喜欢

Practice: fabric user certificate revocation operation process

Technology cloud report won the special contribution award for the 10th anniversary of 2013-2022 of the "cloud Ding Award" of the global cloud computing conference
![[groovy] mop meta object protocol and meta programming (Introduction to groovyobject interface | introduction to metaclass | implementation of class methods using groovyobject invokemethod)](/img/48/cd7960bbbc51a967b20da410bf81fe.jpg)
[groovy] mop meta object protocol and meta programming (Introduction to groovyobject interface | introduction to metaclass | implementation of class methods using groovyobject invokemethod)

IIC bus realizes client device

Golang writes the opening chapter of selenium framework

The simple problem of leetcode is to split a string into several groups of length K

Leetcode simple question check whether all characters appear the same number of times

a-tree 树的全部展开和收起

我把开源项目alinesno-cloud-service关闭了

元宇宙中的三大“派系”
随机推荐
Oracle is sorted by creation time. If the creation time is empty, the record is placed last
Navigation day answer applet: preliminary competition of navigation knowledge competition
Summary of concurrency control
[Chongqing Guangdong education] National Open University autumn 2018 0088-21t Insurance Introduction reference questions
Damn, window in ie open()
Metaverse ape ape community was invited to attend the 2022 Guangdong Hong Kong Macao Great Bay metauniverse and Web3.0 theme summit to share the evolution of ape community civilization from technology
Leetcode simple question: check whether each row and column contain all integers
如何开发引入小程序插件
Nanjing: full use of electronic contracts for commercial housing sales
U盘的文件无法删除文件怎么办?Win11无法删除U盘文件解决教程
Thinkphp5.1 cross domain problem solving
Cobaltstrike builds an intranet tunnel
Comment développer un plug - in d'applet
thinkphp5.1跨域问题解决
Draw a red lantern with MATLAB
Pinctrl subsystem and GPIO subsystem
Platformio create libopencm3 + FreeRTOS project
Granularity of blocking of concurrency control
Nacos installation and service registration
Analysis of the problem that the cookie value in PHP contains a plus sign (+) and becomes a space