分布式系统CAP原则解读

一、概念解释

C——Consistency(一致性)
A——Availablity(可用性)
P——Partition tolerance(区分容错性)
在这里插入图片描述

在一个分布式系统中,三者不可兼得,要么CA,要么AP,要么CP,不可能CAP同时存在。

C——Consistency(一致性)

在同一时间,各节点上的数据完全一致。对于客户端而言,是并发访问修改的数据如何获取;对于服务端而言,是如何在系统中把数据进行备份和复制。
一致性分为弱一致性、强一致性、最终一致性。

A——Availablity(可用性)

服务一直可用,能正常接收请求,并能在正常的响应时间内返回数据。

P——Partition tolerance(区分容错性)

对于用户而言,分布式系统是一个整体,当一个节点挂掉或者请求太多处理不过来,能够通过访问另一个节点获得,对客户的使用不造成影响。

二、三种选择:

CA:

如果不分区,强一致性和可用性可以同时保证,因为不涉及到数据的同步,所以当一个请求对X值进行更改,系统能接收到另一个请求,并返回X的最新值。但是,没有了P,就不能进行节点的扩展,就不能叫做分布式系统了。

AP:

系统进行了分区,并要保证可用性。为了保证高可用,每个节点都使用本地的数据提供服务,导致全局数据不一致。当并发比较多时,用户可能会觉得访问流畅,但他们得到的结果不一定相同。
最典型应用:双11时大家都抢购某类商品,用户使用流畅不阻塞是很重要的,就算是某个页面看到的数据不一致,也影响不太大。

CP:

既要保证一致性,也要保证分区容错性。分区会导致同步的时间比较长,而且为了保证一致性,只能等数据同步完成后才能提供正常的访问服务。
最典型的应用:Redis、HBase。比如技术上选择了Redis做数据缓存,那首先就是看重了其一致性和分区容错性,如果遇到没及时返回结果的情况(非可用),也可以通过直接访问数据库得到数据。

三、其他对比

1、目前在互联网应用中,由于数据量大并发量大,所以会有很多的主机、节点,分区容错性是非常必要的,只能在C和A中做抉择,CP的选择用处最广;
在银行这类对资金敏感的行业中,C是最重要的,宁可停止服务,也要保证资金的一致和准确,所以会在A和P中做抉择。

2、传统的关系型数据库是CA模式,应对简单的查询和联合查询、事务级更新等。且通常遵循ACID强事务机制,A在事务中的操作具有原子性,要么全都执行要么全都不执行;C数据保持一致性,在不同的事务中访问同一份数据能得到相同的结果;I两个事务相互不影响;D对事务操作后可进行持久化。
NoSql比较注重性能和扩展性,只能提供行级别的原子性。

参考文章:
分布式之CAP原则详解
CAP原则
CAP 定理的含义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值