补偿事务基本概念

简介: 补偿事务基本概念

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的最佳实践去读。)

目录
相关文章
|
3月前
|
存储 Kubernetes Docker
在K8S中,与K8S相关基础概念有哪些?
在K8S中,与K8S相关基础概念有哪些?
|
6月前
|
jenkins 测试技术 持续交付
掌握Jenknis基础概念
任务(Jobs) Jobs是Jenkins中的核心概念。它们定义了构建过程的一系列步骤。一个Job代表了一项任务或一个工作单元,可以是软件项目、自动化流程或其他工作。每个Job都有一个配置,包括源代码管理、构建触发条件、构建参数等。 构建(Builds) 构建是对特定Job的一次执行实例。每次触发一个Job,Jenkins将创建一个新的构建实例。它包含了执行构建所需的所有步骤、输出信息和构建的状态。构建是CI/CD流程的实际执行单元。
82 0
|
Kubernetes 调度 Docker
k8s基本概念-2
k8s基本概念
49 0
|
存储 Kubernetes API
k8s基本概念-1
k8s基本概念
96 0
|
存储 Kubernetes 负载均衡
K8S(一)基本概念篇
最近公司要搭建一个微服务项目,之前的docker-compose部署的方式需要替换成K8S了,然后,哈哈,这个机会了又落到我身上了,虽然我并不知道怎么部署,但是我还是挺高兴的,又可以边学习边运用了,真是不赖。接下来不定期更新K8S系列文章,记录我的成长和踩坑记。
128 0
|
存储 算法 Unix
|
存储 NoSQL 网络协议
|
存储 设计模式 算法
C++基础概念(上)1
C++基础概念(上)1
|
机器学习/深度学习 数据挖掘 开发者
基本概念| 学习笔记
快速学习基本概念。
基本概念| 学习笔记
|
存储 缓存 关系型数据库
LotusDB 设计与实现—1 基本概念
LotusDB 是一个基于 LSM Tree 进行设计,并结合 B+ 树优势的单机 KV 存储引擎,读写性能稳定、快速。
188 0
LotusDB 设计与实现—1 基本概念