1. cap基本理论

cap是指在分布式系统中,一致性(consistency)、可用性(avaliablity)、分区容错性(partition tolerance)

 

 一致性

all nodes see the same data all the same time.所有主副结点同一时间数据完全一致(这里是指数据同步)

可用性

read and write always success.服务一直是可用的,用户随时访问,都能在可控时间内返回正确的数据(理解起来似乎和一致性一样,其实是指在数据在所有节点同步后才能达到可用性的)

分区容错性

即多节点/多服务器。分布式系统在某一个节点出问题后不影响其他节点,其他节点仍能够对外提供一致性或者可用性的服务

 

2. cap三者不可兼得

满足c、a,那么p能不能满足:满足c是要求实现所有机器数据同步,而同步需要时间,机器越多同步时间越久。这里问题来了,同时满足c同时要满足a(即可控时间内用户查询所有机器返回数据都是正确的)这样只能要求机器不能太多,也就是p是满足不了

 

满足c、p,那么能不能满足a:满足c是要求实现所有机器数据同步,而同步需要时间,机器越多同步时间越久。这里问题来了,同时满足c同时要满足p(即机器也要够多),那么数据同步需要很多时间。而a的要求是可控时间内用户获取所有数据都是最新的,所以说a不能满足

 

满足a、p,那么能不能满足c:满足a要求用户可控时间内访问所有机器得到数据都是最新的,满足p是要有足够多的机器,那么如果机器比较多同步数据的时间就很大。所以这种情况下不能满足c

 

一般来说,分布式系统大都是满足ap,选择牺牲强一致性,选择最终一致性,比如双11、12306等经常出现抢到之后显示没有情况

 

3.Base理论

Base是basically avaliable(基本可用)、soft state(软状态)和eventually consistent(最终一致性)的简写。base作用是保证系统的可用性,然后通过最终一致性来代替强一致性,它是目前分布式系统设计中最具指导意义的经验总结。

Base中基本可用指得是保障核心功能的基本可用,其实是做了“可用性”A方面的妥协,比如

  • 电商网站在双十一大促等访问压力较大的时候,关闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;

  • 为了错开双十一高峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰

  • 在你抢购商品的时候,往往会在队列中等待处理,这也是常用的延迟队列

软状态、最终一致性指得是允许系统中数据存在没有及时更新的中间状态,但是最终数据状态是要更新到最新的

 

 

参考文献

https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247539136&idx=2&sn=17a9f1dd8724e27ea5c0f9cfd298fd1b&chksm=fbb1d03eccc659285c15a9c71231a404535ab1be975c062eef32dc96906c29aa322509e6809d&scene=27

posted on 2023-01-07 15:19  colorfulworld  阅读(190)  评论(0编辑  收藏  举报