前言
每年金三银四,金九银十之际,想进阶梦想挑战大厂的朋友层出不穷。
梦想是要有的,万一就实现了呢?且撇开大牛们不说,每年面试之时问题也层出不穷,不得不说,每年被算法绝杀的朋友也是不在少数啊。
这篇文的目的在于提醒朋友们不管你是正在进阶的小白还是经验丰富的大牛,请熟练算法,可能它就成为你成功进入大厂的阶梯呢,最后祝正在准备进阶面试大厂的的朋友,一切顺利,如愿以偿。
什么是 CAP
CAP 定理最初是由加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在 2000 年的 ACM PODC 上提出的一个猜想,也因此被叫做布鲁尔定理。后来在 2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了 CAP 定理的证明,让它成为分布式系统领域公认的一个定理。
CAP 定理指出了,在一个跨区域网络连接,共享数据的分布式系统中,一致性(Consistency),可用性(Availability)和分区容错性(Partition Tolerance) 这三个约束属性最终只能同时满足二个。
下面是关于这三个属性的简单描述:
- 一致性:客户端进行读操作得到的数据永远是最近一次写入的数据,要求了对数据读写的强一致性。
- 可用性:客户端的请求在限定时间内总能从非故障的系统节点得到正常的响应,其中不能有超时,不能出错如 502之类。
- 分区容错性:就是出现网络分区现象,即节点间无法正常通信,数据同步出现延时等情况时,系统仍能继续提供服务。
需要注意的是,CAP 描述了一个常规的分布式系统场景:有网络连接,且数据跨节点进行共享。如果在整个系统中,数据只有一份,并且其他节点没有对应的副本,也不需要进行跨节点的数据共享,这样分布式系统就不是 CAP 关心的对象了,也谈不上结合 CAP 定理去设