社区编辑申请
注册/登录
CAP,能少了P?你知道吗?
网络 通信技术
由于网络通信肯定会出现延迟丢包等问题,所以一般情况而言,分区容错性是必须实现的。那么分布式系统会在一致性和可用性之间进行权衡, 即C和A之间的选择。

哈喽,大家好,我是指北君。

大型网站几乎都是分布式系统,分布式系统也越来越重要,你也会发现周围的许多事物已经是分布式理论的最佳实践了。

前言

分布式系统(distributed system)主要有三个指标 一致性 (Consistency),可用性(Availability),分区容错性(Partition tolerance)。

一致性是指更新操作成功后,所有节点在同一时间的数据完全一致。

可用性是指用户访问数据时,系统是否能正常响应时间内返回数据。

分区容错性是指分布式系统在遇到某个节点或网络分区故障时,仍然能够对外提供满足一致性和可用性的服务。

CAP理论基本可以定义为,以上的三个指标不能全部做到,即只能同时满足CA, CP, AP。

1. 分区容错性

分布式系统存在多个子系统,每个子系统子网络可以叫做区。各个节点之间的数据需要同步,子系统之间也需要通信。而分区容错指的是某个节点出现故障,而整个服务不会受到大的影响。

若一个服务为单节点服务,那么它可以说是满足CA。

C表示任何时间点读取的数据都是相同的,保证了一致性。

A表示只要有节点可以用,那么就可以提供服务

由于是单节点服务,那么总是满足CA的条件。

而在分布式系统中,大多时候,单节点出问题之后,我们是需要保障整个系统都是可以使用的。所以可以认为CAP中的P总是需要成立的。

2. 一致性

一致性指的是分布式系统中所有节点在同一时间访问时,返回数据完全一致。

从客户端看,就是并发访问时获取数据的一致性。

服务端来看,就是数据节点之间的同步问题,即节点之间通过通信保持数据的实时更新。

也有对一致性分成强,弱以及最终一致性三类。

强一致性 要求数据更新后,对于其他节点,必须立马同步,并可见。

弱一致性 可以允许在数据更新后,部分节点不能访问到最新的数据。

最终一致性 要求一段时间内不能访问最新数据,但是一段时间后,分布式系统的所有数据需要统一

3. 可用性

相对来说,可用性比较容易理解,就是说任何时候,我们都可以从系统中获取数据。系统可以提供正常的用户服务。不会出现操作失败,访问超时等情况

总结

由于网络通信肯定会出现延迟丢包等问题,所以一般情况而言,分区容错性是必须实现的。那么分布式系统会在一致性和可用性之间进行权衡, 即C和A之间的选择。

CP without A  即要求一致性,每个请求都要求服务之间保持强一致性,分区则会使同步时间无限延长,如果网络严重故障,消息丢失的情况下,用户体验差,需要全部数据一致后才能提供访问。比如Redis,Hbase 等就会要求数据一致性。Zookeeper 也是遵循CP原则,Leader节点挂掉之后,集群会进行选举,选举期间整个Follower都是不可用的,需要同步数据,所以需要Zookeeper恢复之后才可以使用。

AP without C 即要求高可用而且可以分区,此时需要放弃一致性。分区节点出现故障时,为了满足高可用,每个节点只能使用本地的数据提供访问,避免服务中断。这种典型的应用就是抢票等情形,前一秒还有票,当我输入验证码之后再点击,票已售罄。心里的草泥马无限增生。Eureka是采用AP原则,牺牲一致性,达到可用性的目的。

在一致性方面做出让步之后,有些系统会实现最终一致性,尽力保证整个系统的数据一致性。

分布式系统的一致性和可用性之间的选择没有固定的搭配,而需要根据不同的业务场景进行选择,吹牛没用,合适才行。

责任编辑:武晓燕 来源: Java技术指北
相关推荐

2021-04-16 15:02:11

2022-05-19 12:14:22

分布式开发框架

2018-06-08 09:10:49

CAPACELC存储系统

2019-09-05 09:29:00

CAP理论分布式系统

2020-10-16 06:36:57

CapBase定理

2020-10-10 11:23:36

运维架构技术

2018-06-20 10:42:47

分布式系统CAP

2021-10-26 09:55:52

2019-05-29 10:04:38

CAP理论 AP

2020-12-14 14:24:07

CAP分布式数据一致性

2015-05-15 15:30:00

2021-10-11 19:30:02

2018-01-25 08:29:28

Kafka源码存储

2017-11-13 20:37:49

Chrome技巧web

2018-05-10 16:02:48

Android程序赠工具

2021-05-28 06:19:22

ZooKeeperConsulNacos

2020-06-29 07:58:18

ZooKeeperConsul 注册中心

2020-11-10 12:17:43

鸿蒙OS编译环境

2020-07-03 08:39:06

分布式面试官网络

2021-03-04 17:55:27

算法Raft分布式

同话题下的热门内容

常见的企业网络连接类型面试突击:输入URL之后会执行什么流程?

编辑推荐

FTP与SFTP两者有什么区别你的手机支持5Gwifi吗?5G上网真的很快吗?VXLAN与EVPN的结合使用VXLAN技术介绍:三层的网络来搭建虚拟的二层网络什么是通信原理?原来这么简单
我收藏的内容
点赞
收藏

51CTO技术栈公众号