zoukankan      html  css  js  c++  java
  • 分布式相关理论知识(持续更新)

    1. CAP理论:

      CAP理论是指:一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)。任何分布式系统最多只能满足其中的两种,如spring cloud满足AP规则,分布式事务满足AP或者CP。

      一致性是指分布式下多节点数据是否一致; 可用性是指分布式服务保持持续可用状态;分区容忍性是指分区网络下的容忍性,这在分布式环境是必须的。

    2. BASE理论:

      BASE理论是指:基本可用性(Basically Available)、软状态(Soft State)、最终一致性(Eventual Consistency).

      基本可用性指分布式故障时,允许损失部分的可用性来保证核心 功能可用;

      软状态指允许分布式系统存在中间状态,该中间状态不影响系统整体可用性;

      最终一致性指分布式系统中所有副本数据经过一定时间后,最终达到一致的状态;

    3. 一致性模型

      数据一致性模型分为三种:

      ①强一致性:要求任何时候副本中的数据必须保持一致,一般采用同步更新操作。

      ②弱一致性:不承诺立即更新读取的数据,也不承诺多久可以读取。

      ③最终一致性:弱一致性的一种形式,数据更新后,系统不承诺立即更新读取到的数据,但是会保证最终可以读取更新的数据。

    4. 分布式解决方案

      1. 2PC(强一致性):分阶段提交,记录事务提交所处的阶段状态,组件重启之后,可通过日志恢复事务提交的阶段状态并重试,数据节点需要保证提交的幂等*

      2PC存在的问题是当某阶段提交比较耗时会影响整个流程造成阻塞。

      2. eBay事件队列方案(最终一致性):它的核心思想是将需要分布式处理的任务通过消息或者日志的方式来异步执行,消息或日志可以存到本地文件、数据库或消息队列,再通过业务规则进行失败重试,它要求各服务的接口是幂等的。

      3. TCC(Try-Confirm-Cancel)补偿模式(最终一致性):在多服务依次请求调用中,弱其中一个环节出错,则前面之前成功的环节回滚,回滚成功后,系统数据是一致的。

      实现的关键要素:服务调用链必须被记录下来;每个服务提供者需要提供业务回滚操作;按照失败原因执行不同的回滚策略。

    5.事务ACID特性:

      ①原子性(A):整个事务的所有操作要么全部完成,要么全部不做,没有中间状态,一旦其中一个操作发生错误,所有执行过的操作都回滚。

      ②一致性(C):事务的执行必须保证系统的一致性,只要事务执行成功,所有操作的数据都必须正常。

      ③隔离性(I):事务与事务直接不会相互影响。

      ④持久性(D): 一个事务完成,对数据的变更实现了持久化。

    备注:

    幂等:是指任意多次执行与一次执行的结果都相同,例如支付场景下网络异常,用户多次点击支付,最后只扣除一次余额。

  • 相关阅读:
    IP地址 子网掩码 默认网关和DNS服务器的关系
    ios下微信浏览器如何唤醒app?app已上架应用宝
    iOS: 零误差或极小误差的定时执行或延迟执行?
    iOS单例创建的一点疑惑
    Method Swizzing中一般替换方法都写在Category类别里吗?有没有别的实现方式
    相机拍照友盟检测crash是为什么?
    使用google API之前需要對input 做什麼 安全性的處理?
    关于node的聊天室错误
    Node+Deployd+MongoDB安装问题
    array.fliter无法正确过滤出我想要的数组
  • 原文地址:https://www.cnblogs.com/bigbang92/p/distributed-theories.html
Copyright © 2011-2022 走看看