分布式基础之CAP

前言

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

  • C表示一致性(Consistency),分布式中所有节点访问数据时,要求数据始终都是最新的。

  • A表示可用性(Availability),分布式中任意节点出现故障时,要求系统可正常使用。

  • P表示分区容忍性(Partition tolerance),分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。(分区状态可以理解为部分机器不连通了,比如机器挂了,繁忙失去响应,单机房故障等)

一致性(Consistency)

数据一致性,及系统只读到最新写入的数据,如:单点串行化的方式,就能达到一致性效果。

单机架构保持一致性

分布式架构数据同步失败,无法保持数据一致性

举个栗子:你去租房的时候都会去找地产中介(某链),你找到了A小区的门店发现没有需要的房源,然后去B小区的门店发现有个房源很适合你,这就可以理解为两个门店信息不一致,及不满足一致性要求,但实际上你会遇到这种情况,你去A小区门店询问的时候,有你需要的房源,然后他们会去B小区的门店拿钥匙,这是因为房东把房源交给了B小区门店,然后A小区的门店同样同步的B门店的房源,这样就满足一致性的要求。

可用性(Availability)

如果每运行100个时间单位,有1个时间单位不可用,则说系统的可用性是99%。

如上图服务A可能由于网络原因导致不可用,但是B、C还是可以继续服务的,但是在反向代理那个位置发生了故障那系统都不可用了,它不是高可用的。

举个栗子:还是以租房为例,你去租房的时候发现A小区的门店今天关门了,然后直接去了B小区的门店发现他们正常工作的,这就满足了可用性的要求,如果去B小区或其他门店都没有正常工作,那这家地产商可能倒闭了,没法对客户提供可用性的服务了。

分区容忍性(Partition tolerance)

分布式系统,大多都是很大个节点,第个节点节点之前都不是完全独立的,需要相互通信,当发生节点无法连通时,系统如何进行容错处理,是需要考虑的。

举个栗子:C小区新增加了一个门店,装修啥的都弄好了,就是没拉网线,没有连通性,等于就是个孤立的门店,店员只能大眼瞪小眼,没得事做。那你去A门店找房源,那里的人可能都不知道有C小区这个门店,所以A直接带你去了C小区看房子了。

总结

一致性,可用性,分区容忍性三者只能取其二,常见的最佳工程架构实践是什么呢?最常见的实践是这样的:

  • 连通性异常的处理必须保证,满足P

  • 一致性C与可用性A一般二选一

  • 选择一致性C,举例:传统单库水平切分,就是这类选型的典型

  • 选择可用性A,举例:双主库同步高可用,就是这类选型的典型

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值