• cap理论、base 定理、分布式事务的理解与相互关系


      一、网络分区肯定是就同一个集群而言的。对于不同集群来说, 正是因为集群间本就没有太多的交互,才需要从逻辑上分割成不同的集群,这些逻辑上不同的集群本就是可以独立对外提供服务的

      一个集群的各结点部署在一个机房的不同的子网(即不同的机器上,如 195.207.9.21、195.207.9.22、195.207.9.23),不可避免的会出现由于网络问题而导致结点之间通信失败,此时仍可对外提供服务,这就叫网络分区。如果所有的节点都部署在一个机器上,是不存在通信失败的情况的,除非节点挂了。

    如何解决:
      尽量使用异步取代同步操作(同步操作由于网络问题经常会同步失败),例如使用异步方式将数据不同节点间的数据进行同步,这样结点之间能有效的实现松耦合。如果发生了网络分区,虽然数据是暂时不一致的,但最终结果一致的。分区容忍性分是分布式系统具备的基本能力
    在这里插入图片描述

      二、一致性:一个集群内所有节点在同一时间的数据完全一致.
      一致性是指数据在多个副本之间能否保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一直的状态。

      对于一个将数据副本分布在不同分布式节点上的系统来说,如果对第一个节点的数据进 行了更新操作并且更新成功后,却没有使得第二个节点上的数据得到相应的更新,于是在对第二个节点的数据进行读取操作时,获取的依然是老数据(或称为脏数 据),这就是典型的分布式数据不一致的情况。在分布式系统中,如果能够做到针对一个数据项的更新操作执行成功后,所有的用户都可以读取到其最新的值,那么 这样的系统就被认为具有强一致性。

      保证节点之间的数据的一致性就要做到节点之间的数据同步。

    三、可用性

      可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。这里的重点是"有限时间内"和"返回结果"。

      有限时间内"是指,对于用户的一个操作请求,系统必须能够在指定的时间内返回对 应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。另外,"有限的时间内"是指系统设计之初就设计好的运行指标,通常不同系统之间有很 大的不同,无论如何,对于用户请求,系统必须存在一个合理的响应时间,否则用户便会对系统感到失望。

      "返回结果"是可用性的另一个非常重要的指标,它要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果通常能够明确地反映出队请求的处理结果,即成功或失败,而不是一个让用户感到困惑的返回结果。

    四、cap 之间的相互影响
    在这里插入图片描述
    五、分布式事务产生的场景

      这里边所说的数据一致性和 cap 的数据一致性是不同的概念,在分布式事务中,由于存在网络通信,不同的服务单元会开启了不同的事务,每个事务处理的是不同的数据。

    六、base 理论
      cap 理论强调的是集群的内部可用性、一致性、分区容错性。而 base 理论则对 cap 进行了升级演化,是对 CAP 中一致性和可用性权衡的结果,它强调的是系统,系统的内部会存在着多个集群。

      base 理论的三个特性:Basically Available(基本可用),Soft state(软状态),和 Eventually consistent(最终一致性)

    1、基本可用呢:假设系统,出现了不可预知的故障,但还是能用,相比较正常的系统而言:

    响应时间上的损失:正常情况下的搜索引擎 0.5 秒即返回给用户结果,而基本可用的搜索引擎可以在 1 秒作用返回结果。

    功能上的损失:在一个电商网站上,正常情况下,用户可以顺利完成每一笔订单,但是到了大促期间,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。

    2、Soft state(软状态)
    允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。

    3、Eventually consistent(最终一致性)
    最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

    7、分布式事务与 base:
      分布式事务在 base 理论中解决的是软状态和一致性问题,根据不同的一致性要求使用不同的解决方案。二阶段、三阶段、tcc、mq等等,有些使用的是强一致性,有些是弱一致性。

    参考 1
    参考2

  • 相关阅读:
    2.Vue — 模板语法、数据绑定、el与data的写法、数据代理
    联想拯救者R7000P加硬盘
    Unity之OpenXR+XR Interaction Toolkit快速监听手柄任意按键事件
    resource android:attr/lStar not found.和unknown tag <:string>问题
    【react基础02】编写函数式组件和类组件
    【音视频|ALSA】ALSA是什么?ALSA框架详细介绍
    云原生核心技术之:微服务 | DDD(领域驱动设计)| 微服务技术框架
    伦敦金开户需要多少资金,有开户条件吗?
    软件开发生命周期模型
    ElasticSearch分布式搜索引擎-03
  • 原文地址:https://blog.csdn.net/weixin_45197447/article/details/126748393