CAP\BASE\ACID 概念 - 第六周

发布于: 2020 年 07 月 15 日

CAP

  • Consistency(一致性)

访问的所有节点的数据为最新

  • 弱一致性

能容忍后续的访问只能访问到部分或者全部访问不到

  • 强一致性

任何一次读都能读到某个数据的最近一次写的数据。

  • 最终一致性

不保证任意时刻任意节点上的同一份数据都相同,但随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。

  • Availability (可用性)

每次请求都能获取正常(无错或超时)的响应,但不保证数据为最新数据)

  • Partition tolerance(分区容错性)

当发生网络分区故障时,系统仍然继续运行(允许节点之间的网络丢弃(或延迟)了任意数量的消息)

CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但放弃P的同时也就意味着放弃了系统的扩展性,也就是分布式节点受限,没办法部署子节点,这是违背分布式系统设计的初衷的。传统的关系型数据库RDBMS:Oracle、MySQL就是CA。

CP without A:如果不要求A(可用),相当于每个请求都需要在服务器之间保持强一致,而P(分区)会导致同步时间无限延长(也就是等待数据同步完才能正常访问服务),一旦发生网络故障或者消息丢失等情况,就要牺牲用户的体验,等待所有数据全部一致了之后再让用户访问系统。设计成CP的系统其实不少,最典型的就是分布式数据库,如Redis、HBase等。对于这些分布式数据库来说,数据的一致性是最基本的要求,因为如果连这个标准都达不到,那么直接采用关系型数据库就好,没必要再浪费资源来部署分布式数据库。

 AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。典型的应用就如某米的抢购手机场景,可能前几秒你浏览商品的时候页面提示是有库存的,当你选择完商品准备下单的时候,系统提示你下单失败,商品已售完。这其实就是先在 A(可用性)方面保证系统可以正常的服务,然后在数据的一致性方面做了些牺牲,虽然多少会影响一些用户体验,但也不至于造成用户购物流程的严重阻塞。

https://www.cnblogs.com/duanxz/p/5229352.html

BASE

  • Basically Available(基本可用)

分布式系统在出现不可预知故障的时候,允许损失部分可用性

  • Soft state(软状态)

软状态也称为弱状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据听不的过程存在延时。

  • Eventually consistent(最终一致性)

不保证任意时刻任意节点上的同一份数据都相同,但随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化

ACID

  • Atomicity 原子性

一个事务必须被视为一个不可分割的最小工作单元。

  • Consistency 一致性

数据库总是从一个一致性的状态转换到另外一个一致性的状态。

  • Isolation 隔离性

通常来说,一个事务所做的修改在最终提交之前,对其他事物是不可见的。

  • Durability 持久性

一旦事务提交,则其所做的修改就会永久保存到数据库中。

发布于: 2020 年 07 月 15 日 阅读数: 11
用户头像

X﹏X

关注

还未添加个人签名 2018.04.25 加入

还未添加个人简介

评论

发布
暂无评论
CAP\BASE\ACID概念 - 第六周