zoukankan      html  css  js  c++  java
  • CAP定理与BASE理论

    1. CAP定理

    • C:Consistency,一致性
    • A:Availability,可用性
    • P:Partition tolerance,分区容错性

    CAP定理,指的是在一个分布式系统中,一致性、可用性、分区容错性,三者不可得兼。

    2. CAP详解

    2.1 一致性(C)

    指所有节点访问同一份最新的数据副本。通俗理解就是,在分布式系统中,所有的数据副本,在同一时刻值相同。

    2.2 可用性(A)

    每次请求都能获取到相应,可以对外提供服务

    2.3 分区容错性(P)

    由于分布式系统的一个节点发生网络延迟或故障,在规定时限内系统不能做到数据一致性,就发生了分区(系统中有多个数据不一致的节点)。此时,必须在一致性和可用性之间做出选择。

    例如:分布式系统中有两个节点,一个节点发生了网络延迟或故障。如果为了保证节点数据一致性,那么就必须放弃可用性,就是两个节点都不再提供服务;如果为了保证可用性,就是说仍要提供服务,那么就必须放弃一致性,没有发生网络延迟或故障的节点仍提供服务。

    3. CP还是AP?

    在分布式系统中,发生网络延迟或故障是不可避免的,也就是分区容错性是避免不掉的,而发生了分区后,只能在一致性和分区容错性自建选择,那么我们只有两种选择:

    • 数据一致性和分区容错性(CP)
    • 可用性和分区容错性(AP)

    无论选择CP,还是选择AP,都是根据业务需求来选择,没有所谓的谁比谁好。

    3.1 选择CP

    也就是说,我们更看重数据的一致性,适用于对数据一致性有严格要求的业务场景,例如金融,12306售票。

    3.2 选择AP

    此时更看重可用性,放弃一致性(还是要追求最终一致性的,不一致的数据没有意义),也是各大互联网公司一直宣称服务不可用时间有多少秒,强调的就是可用性。

    4. BASE理论

    BASE理论是:

    • 基本可用(BA, Basically Available)
    • 软状态(Soft State)
    • 最终一致性(Eventual Consistency)

    其思想是,在分布式系统,选择可用性和分区容错性时,无法做到一致性,可以采用适当的方案达到最终一致性,在保证可用性的同时,数据最终也能达到一致。

    例如,在电商的促销活动中,是为了追求高可用(相对于CAP中的可用,高可用偏重于可以处理高并发,也是就高QPS),放弃一致性,选择最终一致性(下单成功后,不会立马收到短信,延迟一段时间还是会收到短信。记得某平台,在购物节期间,都不再提供发短信服务了)。为什么要追求可用,甚至是高可用呢?在促销活动中,1件商品,可能有1百万个人同时在抢,那么就是说,当一个人进入抢购时(要判断这个人是不是满足参加的条件等),剩余的都在等待,甚至于拒绝你抢购,对用来说,这是不能容忍的,最真实的案例就是12306上抢票。

    4.1 基本可用

    指在分布式系统中,发生故障时,允许损失一部分功能,但是其它功能还是可用的。

    4.2 软状态

    指分布式系统中,允许存在数据的中间状态,而中间状态又不会影响系统的可用性。

    4.3 最终一致性

    分布式系统中的数据在一段时间后,最终能达到一致性。

    5. CAP定理和BASE理论

    CAP定理揭示了在分布式系统中一致性、可用性和分区容错性的不能同时满足,而可以设计满足BASE理论的分布式系统。

    参考文献

    CAP定理

    从分布式一致性谈到CAP理论、BASE理论

    CAP和BASE理论

  • 相关阅读:
    Easy UI form表单提交 IE浏览器不执行success ,以及 datagrid 展示过慢
    JS批量获取参数构建JSON参数对象
    Easy UI datebox控件无法正常赋值
    EasyUI控件combobox重复请求后台,dialog窗口数据异常
    后台Post/Get 请求接口 方式
    WebForm 页面ajax 请求后台页面 方法
    实现输入框小数多 自动进位展示,编辑时实际值不变
    页面获取Web控件ID不能正常获取,它惹得祸
    线性表的链式存储——单链表
    线性表
  • 原文地址:https://www.cnblogs.com/acode/p/9233503.html
Copyright © 2011-2022 走看看