分布式系统CAP

CAP定义

Consistency 一致性

即所有节点在同一时间的数据完全一致。即写操作之后的读操作,必须返回该值

  • 强一致性

对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。

  • 弱一致性

如果能容忍后续的部分或者全部访问不到,则是弱一致性。

  • 最终一致性

如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。

为什么会不一致?

当用户修改不会马上在全网更新,必定会有一个延迟,这个延迟被称为 “不一致窗口”,它的长度取决于系统的负载、冗余的个数等因素。

Availability 可用性

即服务在正常响应时间内一直可用。

即在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求

通常情况下和分布式数据冗余负载均衡等有着很大的关联。

Partition Tolerance分区容错性

即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性“或”可用性的服务。

以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

在分布式系统架构中有一个CAP理论:

  • 一致性(Consistency):即当一个Process修改了某个数据后,其他Process读取这是数据时,得到的是更新后的数据,而不是修改前的数据;

      但并不是所有系统都可以做到这一点。例如,在一些并非严格要求一致性的系统中,后来的Process可能需要等待一定时间后才能得到修改之后的数据,这被成为“弱一致性”

      当用户修改不会马上在全网更新,必定会有一个延迟,这个延迟被称为 “不一致窗口”,它的长度取决于系统的负载、冗余的个数等因素。

      但对于某些系统而言,一旦写入,后面读取的一定是修改后的数据,如银行账户信息,这被称为 “强一致性”

  • 可用性(Availability):只要收到用户的请求,服务器就必须立即给出回应(成功或者失败),而不是等待其他事情完成才响应。

         如果需要等待某件事情完成才响应,那么“可用性”就不存在了。

  • 分区容错性(Partition tolerance)比如你有A B两台服务器,它们之间是有通信的,突然,不知道为什么,它们之间的网络链接断掉了。好了,那么现在本来AB在同一个网络现在发生了网络分区,变成了A所在的A网络和B所在的B网络。所谓的分区容忍性,就是说一个数据服务的多台服务器在发生了上述情况的时候,依然能继续提供服务。

应用场景

CA without P:传统的关系型数据库RDBMS----Oracle、MySQL就是CA

CP without A:设计成CP的系统其实不少,最典型的就是分布式数据库,如Redis、HBase等;

AP wihtout C:典型的应用就如某米的抢购手机场景,可能前几秒你浏览商品的时候页面提示是有库存的,当你选择完商品准备下单的时候,系统提示你下单失败,商品已售完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值