关于 CAP 理论,我前面已经写过相关文章了,比如,这一篇《详解 CAP 定理 Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)》,好评如潮。
CAP 理论
- C 一致性:数据在分布式环境下的多个副本之间能否保持一致性,这里的一致性更多是指强一致性;
- A 可用性:分布式系统一直处于可用状态,对于请求总是能在有限的时间 内返回结果致性;
- P 分区容错性:除非整个网络故障,分布式系统在任何网络或者单点故障时,仍能对外提供满足一致性和可用性的服务;
CAP理论:一个分布式系统不可能同时满足一致性、可用性和分区容错性这三个 基本需求,最多只能同时满足其中的两项。
架构师的精力往往就花在怎么样根据业务场景在A和C直接寻求平衡。
BASE 理论
- Basically Avaliable 基本可用:当分布式系统出现不可预见的故障时,允许损失部分可用性,保障系统的“基本可用”;体现在“时间上的损失”和“功能上的损失”;例如:部分用户双十一高峰期淘宝页面卡顿或降级处理;
- Soft state 软状态:允许系统中的数据存在中间状态,既系统的不同节点的数据副本之间的数据同步过程存在延时,并认为这种延时不会影响系统可用性;例如:12306网站卖火车票,请求会进入排队队列;
- Eventually consistent 最终一致性:所有的数据在经过一段时间的数据同步后,最终能够达到一个一致的状态;例如:理财产品首页充值总金额 短时不一致;
BASE 理论:即使无法做到强一致性,但分布式系统可以根据自己的业务特点,采用适当的方式来使系统达到最终的一致性。
面试中经常会遇到分布式一致性问题,最常见的是 Redis 和 MySQL 的一致性问题。回答这类问题,不管你采用哪种缓存模式,都有漏洞,都不完美。因此,最好的做法就是利用业务的特点,做到最终的一致性。
以上,都属于分布式系统协调“方法论”,CAP 理论和 BASE 理论是最常见和面试中最常被问到的知识点。
: » 再也不怕面试遇到 Redis 和 MySQL 读写一致性问题了
原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/252145.html