zoukankan      html  css  js  c++  java
  • 【分布式事务】浅谈分布式事务

    一、什么是事务

      事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。

      简单地说,事务提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。

    二、什么是数据库本地事务

     数据库事务中的四大特性:ACID;

    • 原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;
    • 一致性(Consistent):事务结束后系统状态是一致的;
    • 隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态;
    • 持久性(Durable):事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。

    数据库本地事务就是由ACID特性保证的,但无法保证分布式事务。

    二、什么是分布式事务

      分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。

      简单理解就是,组成事务的操作,在不同的服务节点上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。

    四、分布式事务的基础

      数据库的 ACID 满足了数据库本地事务的基础,但是它无法满足分布式事务,这个时候衍生了 CAP 和 BASE 两个经典理论。

    1)CAP定理

      CAP 定理,又被叫作布鲁尔定理。对于设计分布式系统(不仅仅是分布式事务)的架构师来说,CAP 就是你的入门理论。

    C (一致性):对某个指定的客户端来说,读操作能返回最新的写操作。

    A (可用性):非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。可用性的两个关键一个是合理的时间,一个是合理的响应。

    P (分区容错性):当出现网络分区后,系统能够继续工作。打个比方,这里集群有多台机器,有台机器网络出现了问题,但是这个集群仍然可以正常工作。

    熟悉 CAP 的人都知道,三者不能共有,如果感兴趣可以搜索 CAP 的证明,在分布式系统中,网络无法 100% 可靠,分区其实是一个必然现象。
    CAP 理论中是忽略网络延迟,也就是当事务提交时,从节点 A 复制到节点 B 没有延迟,但是在现实中这个是明显不可能的,所以总会有一定的时间是不一致。同时 CAP 中选择两个,比如你选择了 CP,并不是叫你放弃 A。因为 P 出现的概率实在是太小了,大部分的时间你仍然需要保证 CA。就算分区出现了你也要为后来的 A 做准备,比如通过一些日志的手段,是其他机器回复至可用。

    2)BASE理论

      BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写,是对 CAP 中 AP 的一个扩展。

    基本可用:分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。

    软状态:允许系统中存在中间状态,这个状态不影响系统可用性,这里指的是 CAP 中的不一致。

    最终一致:最终一致是指经过一段时间后,所有节点数据都将会达到一致。

      BASE 解决了 CAP 中理论没有网络延迟,在 BASE 中用软状态和最终一致,保证了延迟后的一致性。

      BASE 和 ACID 是相反的,它完全不同于 ACID 的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。

  • 相关阅读:
    面试题示例
    软件测试面试题(简答)
    278. 第一个错误的版本 领扣
    hbase搭建web项目 报500错误 HTTP Status 500
    java API连接虚拟机上的hbase
    java程序连接hive数据库遇到的问题
    java程序向hdfs中追加数据,异常以及解决方案
    创建一个简单的maven的web程序
    java连接hbase时出现....is accessible from more than one module:
    导师双选制系统
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/11028355.html
Copyright © 2011-2022 走看看