• 分布式-CAP理论


    CAP理论:一个分布式系统最多能同时满足一致性、可用性、分区容错性这三项中的两项。CAP中的一致说的是强一致性

    Consistency 一致性 : 所有节点上的数据,时刻保持一致

     一致性分为强一致性、弱一致性、最终一致性

      例子:有一个mysql集群(a,b),  mysql中有一份数据初始值为1,现有一个用户User,User有两步操作:

      1. 修改mysql集群中的数据为2(假设修改的是a, b中的更改需要同步)

      2. 读取mysql集群中的数据(假设读取的是b)

      强一致性:要求步骤2读取的时候,一定要读取的是2,那么要求mysql之间同步非常迅速或在步骤2上加锁以待数据同步完成

      弱一致性:允许步骤2读取的时候,可以读取的是1,其实就是不需要一致

      最终一致性:允许步骤2读取的时候,可以先读到1,过一段时间再读到2

    Availablility可用性 :每个请求在正常响应时间内都能够收到一个响应,无论响应成功或者失败。

    Partion Tolerance分区容错性:分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

    CAP证明

    CAP权衡

    1. CA without P : 这种情况在分布式系统中几乎是不存在的。分布式环境下,分区是必然的,如果舍弃P,意味着要舍弃分布式系统。

    2. CP without A : 一旦发生网络故障或信息丢失等情况,就要牺牲用户的体验,等待所有数据全部一致了之后再让用户访问。如Rediszookeeper

    3. AP without C: 一旦发生网络问题,为了保证高可用,需要在用户访问时马上得到响应,则每个节点只能用本地数据提供服务,这样会导致全局数据的不一致性。

    适用场景

    对于涉及到钱财这样不能有一丝让步的场景,C必须保证。网络发生故障宁可停止服务。

    对于其他场景,比较普遍的做法是AP,舍弃强一致性,使用最终一致性来保证数据的安全。

    BASE理论

    即使无法做到强一致性(CAP的一致性就是强一致性),但应用可以采用合适的方式达到最终一致性。

    BASE是指基本可用、软状态、最终一致性。

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

    数据库采用分片模式, 把100W的用户数据分布在5个实例上。如果破坏了其中一个实例,仍然可以保证80%的用户可用

    软状态:允许系统存在中间状态,该状态不会影响系统整体可用性。分布式存储中一般数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。

    最终一致性:系统中所有数据副本经过一定时间后,最终能达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

  • 相关阅读:
    ubuntu安装打印机驱动
    clang-format的介绍和使用
    [C++面向对象]-C++成员函数和非成员函数
    [Qt2D绘图]-06QPainter的复合模式&&双缓冲绘图&&绘图中的其他问题
    [Qt2D绘图]-05绘图设备-QPixmap&&QBitmap&&QImage&&QPicture
    [Qt2D绘图]-04绘制文字&&绘制路径
    [Qt2D绘图]-03坐标系统之坐标变换
    [Qt2D绘图]-02坐标系统&&抗锯齿渲染
    [Qt2D绘图]-01Qt2D绘图基本绘制和填充
    [Qt插件]-01Qt插件&&提升部件(自定义控件)
  • 原文地址:https://www.cnblogs.com/yintingting/p/5680183.html
Copyright © 2020-2023  润新知