zoukankan      html  css  js  c++  java
  • 分布式-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%的用户可用

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

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

  • 相关阅读:
    Android开发学习总结(一)——搭建最新版本的Android开发环境
    EntityFramework 6
    EntityFramework优缺点
    十分钟轻松让你认识Entity Framework 7
    SqlServer中的merge操作(转载)
    python打印即时输出的方法
    我的人工智能机器人的游戏
    网络编程的一些知识
    hdu4722 Good Numbers
    hdu4727 The Number Off of FFF
  • 原文地址:https://www.cnblogs.com/yintingting/p/5680183.html
Copyright © 2011-2022 走看看