补偿事务基本概念

简介: 补偿事务基本概念

ACID 即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)

原子性:整个事务中的所有操作,要么全部完成,要么全部失败,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时中间某一时刻的数据。两个事务不会发生交互。
持久性:在事务完成以后,该事务对数据库所做的更改便持久地保存在数据库之中,并不会被回滚。

CAP 理论——在分布式的服务架构中,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)

BASE

Basic Availability:基本可用。这意味着,系统可以出现暂时不可用的状态,而后面会快速恢复。
Soft-state:软状态。它是我们前面的“有状态”和“无状态”的服务的一种中间状态。也就是说,为了提高性能,我们可以让服务暂时保存一些状态或数据,这些状态和数据不是强一致性的。
Eventual Consistency:最终一致性,系统在一个短暂的时间段内是不一致的,但最终整个系统看到的数据是一致的。

业务补偿主要做两件事。

努力地把一个业务流程执行完成。
如果执行不下去,需要启动补偿机制,回滚业务流程。

事务补偿机制TCC(Try、Confirm、Cancel),是由2PC(两阶段提交)演变而来在业务层面去解决一致性问题的一种方案。其精髓在于定于业务执行逻辑的时候,同时实现一个抵消(补偿)正向逻辑的cancel操作,以便在异常情况下对原有操作进行回滚。其主要操作如下:

Try操作做业务检查及资源预留--一般用户框架对外暴露服务
Confirm做业务确认操作--真正执行的逻辑操作,一般认为Try成功Confirm一定成功
Cancel实现一个与Try相反的操作既回滚操作--TCC的精髓,为业务操作定义一个补偿的操作 (对于不了解TCC的同学可以参考下,了解大致背景后再看晧哥的文章会有更深的体会。基本可以当做TCC的最佳实践去读。)

目录
相关文章
|
7月前
|
存储 Kubernetes API
k8s基本概念-1
k8s基本概念
58 0
|
7月前
|
Kubernetes 调度 Docker
k8s基本概念-2
k8s基本概念
32 0
|
7月前
|
存储 NoSQL C语言
基本概念和术语
基本概念和术语
|
8月前
|
存储 Kubernetes 负载均衡
K8S(一)基本概念篇
最近公司要搭建一个微服务项目,之前的docker-compose部署的方式需要替换成K8S了,然后,哈哈,这个机会了又落到我身上了,虽然我并不知道怎么部署,但是我还是挺高兴的,又可以边学习边运用了,真是不赖。接下来不定期更新K8S系列文章,记录我的成长和踩坑记。
99 0
|
存储 NoSQL C语言
一、基本概念和术语
一、基本概念和术语
一、基本概念和术语
|
机器学习/深度学习 数据挖掘 开发者
基本概念| 学习笔记
快速学习基本概念。
68 0
基本概念| 学习笔记
|
存储 算法 NoSQL
数据结构与算法——基本概念和术语
数据结构与算法——基本概念和术语
|
存储 缓存 关系型数据库
LotusDB 设计与实现—1 基本概念
LotusDB 是一个基于 LSM Tree 进行设计,并结合 B+ 树优势的单机 KV 存储引擎,读写性能稳定、快速。
145 0
LotusDB 设计与实现—1 基本概念
|
程序员 开发者 Python
几个基本概念|学习笔记
快速学习 几个基本概念
|
监控 测试技术 5G
软件测试理论知识-基本概念
软件测试的被测对象,通俗的讲,就是我们日常见到的各类在电脑、手机、以及一些我们大多数接触的比较少的硬件设备上的相关软件,比如常见的12306购物网站,抖音、淘宝等app。
软件测试理论知识-基本概念