快手实习二面,说说CAP理论

154 阅读5分钟

大家好呀,我是程序员李寒衣。 今天分享一位同学面试快手实习二面的面经,面经内容放下面了,这次我们主要来讨论下关于CAP理论。

  1. CAP理论
  2. Etcd内部原理
  3. 共识算法说一下
  4. 索引的底层结构
  5. 操作系统的段页式内存管理是什么 为什需要他
  6. 分页机制中内部碎片和外部碎片的区别
  7. Redis为啥快,为啥单线程,为啥用它不用其他的,只有单线程吗?除了缓存还能干啥
  8. 写一个简易版的hashmap吧,只写put函数,数据结构自己定义

CAP理论

CAP 模型,在一个分布式系统里面,不可能同时满足三个点

  • 一致性(Consistency),访问分布式系统中的每一个节点都能获得最新的数据。
  • 可用性(Availability),每次请求都能获得一个有效的访问,但不保证数据是最新 的。
  • 分区容错性(Partition tolerance),分区相当于对通信耗时的要求,系统如果不能在时限范围内达成数据一致, 就意味着发生了分区的情况。(打个比方,这个集群有多台机器,某台机器出现故障了但是集群仍然可以正常工作)

在 CAP 模型中只能满足 CP 或者 AP,之所以不能满足 CA,因为网络通信的不确定性,可能会导致分区容错, 也就是分区容错性必然是存在的,因此我们只能在一致性和可用性之间做选择。

可以体现区分度的说法

用CAP理论分析分布式数据库

  • 在分布式环境下,P是一定存在的,一旦出现了网络分区,那么一致性和可用性就一定要 抛弃一个。

  • 对于NoSQL数据库,更加注重可用性,所以就会是一个AP系统。

  • 对于分布式关系型数据库,必须要保证一致性,所以就会是一个CP系统。

  • 但分布式关系型数据库仍有高可用性需求,虽然达不到CAP理论中的100%可用性,但一般

都具备五个9(99.999%)以上的高可用。

  • 我们可以把分布式关系型数据库看作CP+HA的系统。也由此,产生了两个广泛应用的指标。

    • RPO (Recovery Point Objective):恢复点目标,指数据库在灾难发生后会丢失多长时
    •    间的数据。分布式关系型数据库RPO=0。
    • RTO(Recovery Time Objective):恢复时间目标,指数据库库在灾难发生后到整个系统恢
    •    复正常所需要的时间。分布式关系型数据库RTO<几分钟。像OceanBase啊、TiDB一些基于paxos或者raft的协议的分布式关系数据库

辩证看待CAP理论

  • CAP理论可谓是分布式领域一个"臭名昭著"的理论。

  • 它是一个证明你不能做什么的理论,就像能量守恒一样,限制了分布式系统设计者的行为。

  • 它的C和A条件都太过极端,很多了解不够深入的设计者就喜喜欢生搬硬套,搞得像C和A选 择了一个就必须完全抛弃另一个一样。

  • 实际上,我们在设计一个系统时,更多的是要选择C和A中的一个,对其进行"降级",以此 进行妥协,也就是trade off的一个过程。

2、BASE理论

BASE是Basically Available(基本可用)、Softstate(软状态)和Eventtually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

基本可用

基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性--注意,这绝不等价于系统不可用。比如:

(1)响应时间上的损失。正常情况下,一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果,但由于出现故障,查询结果的响应时间增加了1~2秒

(2)系统功能上的损失:正常情况下,在一个电子商务网站上进行购物的时候,消费者几乎能够顺利完成

每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面

  • 软状态

    •   软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时
  • 最终一致性

    •   最终一致性强调的是所有的数据副本,在经过一段时间的同步之后后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而而不需要实时保证系统数据的强一致性。