分布式一致性-前言

前言

什么是分布式一致性?

对一个副本更新的同时,确保其他副本也能更新,否则不同副本之间的数据将不再一致。

分布式一致性分类?

分布式系统达到一致性后是什么样的状态?

如果失去一致性约束,分布式系统是否可以依赖?

一味地追求一致性,对系统的整体架构和性能又有多大影响?

问题提出

不同产品对于一致性的需求不同:

火车票系统:窗口购票,严格保证一致性(不能买到票不能进站)

银行系统:一致性有一定的延迟(可能转账需要几天),严格保证一致性

秒杀:页面显示库存量可能是错误的(已过期),但是仍可下单,但是在付款时,保证一致性。

 

解决分布式一致性方案:

阻塞写入动作,直到所有副本更新完毕。

带来问题:写性能下降

 

一致性与系统性能的权衡:一致性级别

1.强一致性:

符合用户直觉,写入什么读出的就是什么,体验好,性能影响大。

2.弱一致性:

写入成功后,不承诺多久能达到一致,尽可能保证某个时间级别(如秒级)后,数据达到一致状态。在细分为:

会话一致性:写入的值在同一个客户端回话中可以读到,其他会话不能保证

用户一致性:写入的值对同一用户可以读到,其他用户不能保证。

3.最终一致性:

弱一致性的一个特例,系统保证一定时间内,数据达到一致状态。单独提出来,是因为它是弱一致性中非常重要的一种一致性模型,也是业界在大型分布式系统的数据一致性上比较推崇的模型。

 

posted @ 2019-06-27 10:13  vvf  阅读(130)  评论(0编辑  收藏  举报