补偿事务基本概念

简介: 补偿事务基本概念

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 调度 Docker
k8s基本概念-2
k8s基本概念
32 0
|
7月前
|
存储 Kubernetes API
k8s基本概念-1
k8s基本概念
57 0
|
7月前
|
存储 NoSQL C语言
基本概念和术语
基本概念和术语
|
8月前
|
存储 Kubernetes 负载均衡
K8S(一)基本概念篇
最近公司要搭建一个微服务项目,之前的docker-compose部署的方式需要替换成K8S了,然后,哈哈,这个机会了又落到我身上了,虽然我并不知道怎么部署,但是我还是挺高兴的,又可以边学习边运用了,真是不赖。接下来不定期更新K8S系列文章,记录我的成长和踩坑记。
99 0
|
存储 NoSQL C语言
一、基本概念和术语
一、基本概念和术语
一、基本概念和术语
|
机器学习/深度学习 数据挖掘 开发者
基本概念| 学习笔记
快速学习基本概念。
68 0
基本概念| 学习笔记
|
运维 Kubernetes 持续交付
图解 K8s 核心概念和术语
我第一次接触容器编排调度工具是 Docker 自家的 Docker Swarm,主要解决当时公司内部业务项目部署繁琐的问题,我记得当时项目实现容器化之后,花在项目部署运维的时间大大减少了,当时觉得这玩意还挺新鲜的,原来自动化运维可以这么玩。后面由于工作原因,很久没碰过容器方面的知识了。最近在公司的数据同步项目中,需要使用到分布式调度数据同步执行单元,目前使用的方案是将数据同步执行单元打包成镜像,使用 K8s 进行调度,正好趁这个机会了解一下 K8s,下面我就用图解的形式将我所理解的 K8s 分享给大家。
327 0
图解 K8s 核心概念和术语
|
存储 缓存 关系型数据库
LotusDB 设计与实现—1 基本概念
LotusDB 是一个基于 LSM Tree 进行设计,并结合 B+ 树优势的单机 KV 存储引擎,读写性能稳定、快速。
143 0
LotusDB 设计与实现—1 基本概念
|
程序员 开发者 Python
几个基本概念|学习笔记
快速学习 几个基本概念
|
监控 测试技术 5G
软件测试理论知识-基本概念
软件测试的被测对象,通俗的讲,就是我们日常见到的各类在电脑、手机、以及一些我们大多数接触的比较少的硬件设备上的相关软件,比如常见的12306购物网站,抖音、淘宝等app。
软件测试理论知识-基本概念