zoukankan      html  css  js  c++  java
  • CAP理论

    C--consistency:

    一致性是指,数据的读取永远读到的是最新的数据。当数据分布在多个节点上时,从任意节点读取到的数据永远是最新的状态。

    如何实现一致性?

       1.写入主数据后要将数据同步到从数据库

       2.写入主数据后,在向从数据库同步期间要将从数据库锁定,待同步完成后再释放锁,避免在新数据写入成功后,查询到旧数据。

    分布式系统一致性的特点?

       1.存在数据同步的过程,写操作的响应会有一定的延迟

       2.会对资源暂时锁定,同步完成后再释放

    A--Availability:

    可用性是指,无论任何事务操作都可以得到响应结果,且不会出现响应超时或相应错误。

    如何实现可用性?

       1.写入主数据库后要将数据同步到从数据库

       2.不可将数据库中的资源锁定

       3.即使数据还没有同步过来,从数据库也要返回查询的数据,即使是旧数据,无旧数据就返回一个约定的默认信息,但不能返回错误或响应超时。

    分布式系统可用性的特点:

       1.所有的请求都不会返回错误或响应超时

    P--Partition tolerance:

    分区容错性是指:分布式系统的各个结点部署在不同的子网,这叫做网络分区,不可避免的会出现网络问题而导致通信失败,此时仍可以对外提供服务,这就是分区容错性。

    如何实现分区容错性?

       1.尽量使用异步取代同步操作,例如:redis主服务对从服务的数据同步

       2.添加从服务节点,其中一个从服务挂了,其他从服务也能提供服务

    分区容错性的特点:

       1.分区容错性是分布式系统具备的基本能力。

    CAP组合方式

    在所有分布式事务场景中不会同时具备CAP三个特性,因为在具备了P的前提下C和A是不能共存的。

    AP:

    放弃一致性,追求分区容错性和可用性。例如:redis主从赋值

    CP:

    放弃可用性,追求一致性和分区容错性。例如:zookeeper追求的强一致性、跨行转账

    CA:

    放弃分区容错性,即不进行分区,不考虑网络不通或节点挂掉的问题,则可以实现一致性和可用性。

    BASE理论

    BASE是Basically Availability(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中AP的一个扩展,通过牺牲强一致性来获得可用性,当出现故障允许部分不可用保证核心功能可用,允许数据在一段时间内不一致,但最终达到一致状态。满足BASE理论的事务,我们称之为柔性事务。如:电商交易付款出问题了,商品依然可以正常浏览。

    软状态:由于不要求强一致性,所以BASE允许存在中间状态(软状态),比如订单的支付中状态,待数据最终一致后改成成功状态。

  • 相关阅读:
    SVN还原项目到某一版本(转)
    C# Web Service 不使用服务引用直接调用方法(转)
    动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法 (转)
    log4net示例2-日志输入存入Access(转)
    C# log4net 配置及使用详解--日志保存到文件和Access(转)
    未能解析引用的程序集......因为它对不在当前目标框架“.NETFramework,Version=v4.0,Profile=Client”中的 (转)
    Hello log4net——做一个实用好用的log4net的demo(转)
    JS移动客户端--触屏滑动事件
    js生成二维码实例
    触屏版类似刷新页面文本框获取焦点的同时弹出手机键盘的做法
  • 原文地址:https://www.cnblogs.com/BounceGuo/p/13963871.html
Copyright © 2011-2022 走看看