searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

CAP理论简介

2023-08-02 02:52:12
9
0

CAP理论

CAP理论说明在分布式系统中,一致性,可用性和分区容忍性中的3项只能满足两项

  • C:一致性:假设在 T 时刻写入了一个值,那么在 T 之后的读取一定要能读到这个最新的值。

  • A:可用性:也就是无论系统发生任何故障,都仍然能对外提供服务。

  • P:分区容忍性。

P:分区容忍性

分区错误指的是分布式集群中的出现两个节点之间通信失败,可能是两个节点之间的通信链路出错,也可以是其中一个节点宕机。例如下图中的两个节点G1和G2分别处于两个子网中,G1向G2发送消息,G2可能无法收到,就出现了分区错误。

分区容忍性是指分布式系统中能够容忍分区错误的出现,在分布式系统内,分区是必然的发生的,因此分布式系统必须选则 P,否则一旦发生分区错误,整个分布式系统就完全无法使用了,这是不符合实际需要的。

C:一致性

一致性指的是在时间T1时刻向分布式集群中的一个节点写入一个数据,在时刻T之后的时间,不论在客户端从哪个节点读取数据,都必须是T时刻修改过后的数据。

如下图所示,t1时刻客户端向G1节点写一个数据V1,如果t2时刻从G2节点读取数据是t1时刻写入的数据,就说明系统一致,若从G2节点读取的数据是v0就说明系统不一致

A:可用性

可用性是指客户端任何时刻向系统读取数据,系统都会返回一个数据,即使是不一致或者说是过期的数据,如下图所示,t1时刻客户端向G1节点写入数据v1,但是由于分区错误,G1的数据没有同步到G2,t2时刻客户端从G2节点读取数据时任然可以得到数据v0,只是获取的数据并不是正确的数据。

由于P是分布式系统必须满足的特性,而当网络分区错误出现时,会出现分布式节点中网络不一致的情况,这时候一致性和可用性将不能同时满足

如下图所示为CP系统和AP系统,当G1和G2中的数据不一致时,CP系统中为了满足一致性,客户端从G2将不能获取到任何数据,即G2节点不可用,AP系统中为了满足可用性,G2节点会返回v0给客户端

Spanner官方声称是一个CA系统,但是准确来说是一个 CP + HA 系统,可用性是优于 5 个 9 ,稍微小于 6 个 9,也就是说,Spanner 在系统出现了大的故障的情况下,大概 31s+ 的时间就能够恢复对外提供服务,这个时间是非常短暂的,远远比很多外部的系统更加稳定。然后鉴于 Google 强大的自建网络,P 很少发生,所以 Spanner 可以算是一个 CA 系统。

TiDB 在设计的时候也是一个 CP + HA 系统,多数时候也是一个 CA 系统。如果出现了 P,也就是刚好对外服务的 leader 被隔离了,新 leader 大概需要 10s+ 以上的时间才能选举出来对外提供服务。

 

0条评论
0 / 1000
邓****祺
4文章数
0粉丝数
邓****祺
4 文章 | 0 粉丝
邓****祺
4文章数
0粉丝数
邓****祺
4 文章 | 0 粉丝
原创

CAP理论简介

2023-08-02 02:52:12
9
0

CAP理论

CAP理论说明在分布式系统中,一致性,可用性和分区容忍性中的3项只能满足两项

  • C:一致性:假设在 T 时刻写入了一个值,那么在 T 之后的读取一定要能读到这个最新的值。

  • A:可用性:也就是无论系统发生任何故障,都仍然能对外提供服务。

  • P:分区容忍性。

P:分区容忍性

分区错误指的是分布式集群中的出现两个节点之间通信失败,可能是两个节点之间的通信链路出错,也可以是其中一个节点宕机。例如下图中的两个节点G1和G2分别处于两个子网中,G1向G2发送消息,G2可能无法收到,就出现了分区错误。

分区容忍性是指分布式系统中能够容忍分区错误的出现,在分布式系统内,分区是必然的发生的,因此分布式系统必须选则 P,否则一旦发生分区错误,整个分布式系统就完全无法使用了,这是不符合实际需要的。

C:一致性

一致性指的是在时间T1时刻向分布式集群中的一个节点写入一个数据,在时刻T之后的时间,不论在客户端从哪个节点读取数据,都必须是T时刻修改过后的数据。

如下图所示,t1时刻客户端向G1节点写一个数据V1,如果t2时刻从G2节点读取数据是t1时刻写入的数据,就说明系统一致,若从G2节点读取的数据是v0就说明系统不一致

A:可用性

可用性是指客户端任何时刻向系统读取数据,系统都会返回一个数据,即使是不一致或者说是过期的数据,如下图所示,t1时刻客户端向G1节点写入数据v1,但是由于分区错误,G1的数据没有同步到G2,t2时刻客户端从G2节点读取数据时任然可以得到数据v0,只是获取的数据并不是正确的数据。

由于P是分布式系统必须满足的特性,而当网络分区错误出现时,会出现分布式节点中网络不一致的情况,这时候一致性和可用性将不能同时满足

如下图所示为CP系统和AP系统,当G1和G2中的数据不一致时,CP系统中为了满足一致性,客户端从G2将不能获取到任何数据,即G2节点不可用,AP系统中为了满足可用性,G2节点会返回v0给客户端

Spanner官方声称是一个CA系统,但是准确来说是一个 CP + HA 系统,可用性是优于 5 个 9 ,稍微小于 6 个 9,也就是说,Spanner 在系统出现了大的故障的情况下,大概 31s+ 的时间就能够恢复对外提供服务,这个时间是非常短暂的,远远比很多外部的系统更加稳定。然后鉴于 Google 强大的自建网络,P 很少发生,所以 Spanner 可以算是一个 CA 系统。

TiDB 在设计的时候也是一个 CP + HA 系统,多数时候也是一个 CA 系统。如果出现了 P,也就是刚好对外服务的 leader 被隔离了,新 leader 大概需要 10s+ 以上的时间才能选举出来对外提供服务。

 

文章来自个人专栏
NewSQL
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0