写点什么

「架构师训练营」作业:第 6 周 CAP 原理

用户头像
Amy
关注
发布于: 2020 年 07 月 15 日
「架构师训练营」作业:第 6 周 CAP原理

请简述 CAP 原理。

CAP是分布式系统的一项指标。从一致性(Consisitency)、可用性(Availability)、分区耐受性(Partition Tolerance)这3个方面来衡量分布式系统。

在介绍 CAP原理之前,我们先来了解一个很重要的概念:事务

在计算机科学中,事务是无法被分割的操作,事务处理就是被分割为个体的信息处理。事务必须作为一个完整的单元成功或失败,不可能存在部分完成的事务。



—— 维基百科



也就是说,事务是作为一个单元执行的,要么全部成功,要么全部失败,没有中间状态的。

平时我们说的事务,主要是指数据库事务。数据库事务有ACID这4个基本特性:

  • A:原子性(atomicity)

一个事务对状态的改变是基元的,所有发生的或是不发生的。

要么都成功,要么都失败。

  • C:一致性(consistency)

事务是对状态的正确转换,以组为单位采取的行动不违反与状态相关联的完整性约束。

数据在执行前后满足一致性状态,数据都是有效合法的。

  • I:隔离性(isolation)

即使事务并发执行,对于每个事务T来看,其他的事务都是在T之前或之后执行,但不是两者都执行。

多个事务直接是互不影响的。

  • D:耐久性(durability)

一旦事务成功完成(提交),对状态的改变从故障中幸存并被保留。



随着分布式系统的出现,一个系统会有多个进程、多个数据库,那就会诞生分布式事务的问题。分布式事务是协调不同服务器、不同数据库上的操作的,本质上它还是数据库事务。

CAP原理是分布式系统的入门理论。它从 3 个方面描述一个分布式系统。



  • C:一致性(Consistency)

每次读取的数据都应该是最近写入的数据或者返回一个错误,而不是过期数据

  • A:可用性(Availability)

每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的。也就是说系统需要一直都有可以正常使用的,不引起调用者的异常,但是并不保证响应的数据是最新的。

  • P:分区耐受性(Partition Tolerance)

即使因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的。

子系统之间交互是会有延迟甚至网络故障的,在分布式系统下面,这个是无法避免的。



由于分区延迟或者故障是一定会存在的,在分布式系统必须要满足分区耐受性的情况下,可用性和一致性无法同时满足。CAP 3 个指标,通常只能满足两个。



参考文章:

http://www.ruanyifeng.com/blog/2018/07/cap.html

https://en.wikipedia.org/wiki/Transaction_processing

https://baike.hk.xileso.top/wiki/CAP



用户头像

Amy

关注

还未添加个人签名 2018.06.10 加入

还未添加个人简介

评论

发布
暂无评论
「架构师训练营」作业:第 6 周 CAP原理