CAP
CAP 理论指的是什么:C(Consistency)是数据一致性、A(Availability)是服务可用性、P(Partition tolerance)是分区容错性。C、A、P 只能同时满足两个目标,而由于在分布式系统中,P 是必须要保留的,所以要在 C 和 A 间进行取舍。假如要保证服务的可用性,就选择 AP 模型,而要保证一致性的话,就选择 CP 模型
掌握 CAP 的原理、实践经验、技术认知,然后再结合具体的面试题具体分析

CAP 理论并没有给出衡量 A 和 C 的因素,但如果你做过实际的分布式系统设计,一定会发现系统数据同步的时延(Latency),即例子中节点 A 同步数据到节点 A1 的时间才是衡量 A 和 C 最重要的因素,此时就不会有绝对的 AP 模型还是 CP 模型了,而是源于对实际业务场景的综合考量。

实践经验
互联网分布式的设计方案是数据一致性和系统可用性的权衡,并不是非此即彼
即使无法做到强一致性,也可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性
就要引出 BASE 理论,它是 CAP 理论的延伸。BASE 是 Basically Available(基本可用)、Soft State(软状态)和 Eventually Consistent(最终一致性)三个单词的简写
如何通过 BASE 理论来指导设计实践
- 双十一大促等访问压力较大的时候,关闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;
- 为了错开双十一高峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰;
- 在你抢购商品的时候,往往会在队列中等待处理,这也是常用的延迟队列。
- 用户下单的时候不需要真正地扣减库存,而是仅在前台计个数,然后通过异步任务在后台批量处理
先充分理解理论原理,不能仅浮在概念上
要有自己的思考,表现出你思考能力的不同
将理论结合于实践,讨论实际中处理问题时的思考逻辑
技术认知
尽可能地展示知识体系和技术判断力,这是这两个岗位的基本素质
分布式系统看起来就像一个计算机。计算机包括五大体系结构(即冯诺依曼结构),它有五大部件:分别是控制器、运算器、存储器、输入及输出。你可以这么理解:一个分布式系统也包含这五大部件,其中最重要的是计算与存储。计算与存储由一系列网络节点组成,每个节点之间的通信就是输入与输出,各节点之间的调度管理就是控制器。

掌握回答问题的思路,以后遇到类似的理论性知识的考察,都可以从三个层面回答。
- 展示理论深度。你可以从一个熟知的知识点出发,深入浅出地回答,比如它的工作原理、优劣势、适用场景等。
- 结合落地经验。你不能仅停留在理论理解,还要结合落地方案的技术实现,这样才能体现你的技术闭环思维。
- 展示知识体系,这是任何一个程序员向上发展的基础能力。理论深度和落地经验体现了作为程序员的基本素质,而知识体系和技术判断力则体现了你是否达到架构师的能力边界。
技术人,要有落于地的能力,还要有浮上天的本事

浙公网安备 33010602011771号