分布式系统:
- 概念:将请求按照一定的策略分派到不同的机器上,多台机器执行相同的业务逻辑,看起来就像是在一台机器上访问一样。
- 说明:分布式系统中包含了:分布式文件系统、分布式存储系统。。
CAP理论:
一个分布式系统不可能同时满足一致性,可用性和分区容错性这三个基本的要求,最多只能同时满足其中的两项。
C(Consistency):一致性,即所有节点上的数据时刻保持同步。
1>强一致性:所有节点上的数据时刻保持同步,用户体验最好,但是会降低系统的性能(降低系统的可用性)。
2>弱一致性:系统在写入成功后,不保证立即可以读到最新写入的值,也不保证多久之后数据能够达到一致,但是会尽可能地保证到某个时间级别(如秒级别)后,数据能够达到一致状态。
3>最终一致性: 最终一致性是弱一致性的一个特例,系统保证在一定时间内能够达到数据一致的状态,大多数分布式系统在数据一致性上都选择了最终一致性。
A(Availability):每个请求都能接收一个响应,无论响应成功或失败
P(Tolerance to netword Partitions):系统应该持续提供服务,即使服务器发生网络延迟或死机,导致某些 server 与集群中的其他机器失去联系
CA系统:满足一致性、可用性的系统:
可扩展性不好。
eg:RDBMS,关系型数据库中的事务可以很好地实现数据的一致性。
CP系统:同时满足一致性、分区容错性的系统
性能不是特别高。
eg:redis、mongodb
AP系统:同时满足可用性、分区容错性的系统
不能满足强一致性,但是可以满足弱一致性,故大多数网站的架构选择了AP原则。
说明:由于当前的网络硬件肯定会出现延迟丢包等问题,故分区容错性是分布式系统中必须要实现的,所以我们只能在一致性和可用性之间进行权衡。
BASE(Basically Available,Soft-state,Eventually Consistent)理论:
- 概念:分布式系统只需满足基本可用、柔性状态、数据最终一致性即可。
- 基本可用(Basically Available):
- 概念:一小部分服务挂掉后,其它服务可以正常提供服务。
- eg:当一台机器出问题时,其它机器可以正常提供服务。遇到流量洪峰时,采取降级策略保证基础服务可用。
- 柔性状态(Soft state):
- 概念:允许系统中的数据存在中间状态,并且中间状态的存在不会影响系统的整体可用性,即系统允许在不同节点的数据副本之间在进行数据同步过程中存在延时。
- 最终一致性(Eventually consistent):
- 目的:解决关系数据库强一致性导致可用性降低的问题。
- 思想:通过降低系统对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的提升。