CAP原则的理解

CAP 原则指的是,分布式系统中三个要素一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)最多只能同时实现两点,不可能三者兼顾。

1 前提共识

  • CAP原则不是要求每个节点的数据都一样(不是集群);
  • 分布式系统对外的服务,只是某一个节点,节点之间是内部通信;

2 分区容错性

分区指的是分布式系统的一个节点,如果需要满足分区容错性,意思是因为某些网络、故障原因,我这个节点上没有收到其他节点的一致性通知(不一定是数据同步),比如A、B两个节点,A负责生成订单,B负责短信发送,A生成订单之后,给B发一个信息告诉可以B可以进行短信发送了,但是某些原因B没有收到,也就没有发送短信,这对于业务来说,是不能容忍的,因为我生成了订单,但是没有给用户发短信,这就不满足分区容错性。

为了保证分区容错性,那么系统就强要求A和B必须保证逻辑一致,就是说B必须等到A的生成订单才发短信,并且B没有发短信这次请求就算失败的,类似于事务。

这种场景满足了分区容错性P,满足了一致性C,但是在数据同步期间,服务是不可用的,因为要等同步完成才能用,不满足A;

3 可用性

同样上面的场景,如果我需要满足可用性A,也就是说我在数据同步期间也能访问系统,类似于MySQL的主从复制,在数据从主到从同步期间,服务也是可用的,并且容忍了分区之间的错误(不一致),这种就满足了A和P,但是这时候数据就有不一致性;

4 一致性

为了解决一致性和可用性的问题,很简单,我不使用分布式就可以了,数据和服务全部在单节点上,满足了C和A,既然都没有了分区,那么更没有分区容错性而言了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值