分布式一致性原理与实践
分布式概要
系统对分布式的需求:
- 火车站的售票系统:既要快速地响应客户,同时还要保证系统的数据对于任何客户端都是真实可靠的
- 银行转账系统:需要保证客户绝对可靠的数据安全,可以存在延时。但是最终的一致性一定需要被保证
- 网购系统:例如网页商品上的库存数量,可以说是“错误的数据”。但是在系统进行数据检查时必须一致
分布式一致性问题:
- 数据库之间复制的延时问题(数据复制的需求)
- 为了增加系统的可用性,以防止单点故障引起的系统不可用
- 提高整个系统的性能,通过负载均衡技术,能够让多台服务器同时提供服务
分布式一致性的level:
- 强一致性: 写入什么,就能读到什么
- 弱一致性:不保证写入什么,就能立即可以读到写入的值。但是尽可能保证在某个时间级别后,数据能够到达一致状态
- 最终一致性 弱一致性的一种特例(目前主流模型)
分布式特点:
- 分布式:分布式系统中的多台计算机在空间上随意分布
- 对等性:分布式系统中的计算机无主、从之分
- 并发性:并发的更新资源
- 缺乏全局时钟:在分布式系统中,很难定义两个事件谁先谁后
- 故障总会发送
CAP理论(重点)
Consistency/Availability/Partition tolerance
CAP理论表明,一个分布式系统不可能同时满足一致性、可用性和分区容错性这三个基本需求。最多只能满足两个,因此架构师往往在C和A之间寻求平衡
BASE理论(重点)
Basic Available(基本可用)/Soft state(软状态)/Eventually consistent(最终一致性)
其核心思想是:即使无法做到强一致性,但每个应用都可以根据自身的特点,采用适当的方式来使业务达到最终一致性