分布式系统设计的几种理论

一、ACP理论

A 可用性 Availability,代表服务一直处于正常响应时间内的可用状态。此处A与ACID理论中的A不是一个含义,ACID中的A代表原子性。

C 一致性 Consistency,数据一致性三种策略:更新后的数据需要被后续的访问都能请求到,属于强一致性;如果可以容忍部分请求或全部访问不到,属于弱一致性;如果要求一段时间后需要访问到更新后的数据,属于最终一致性。

P 分区容错性 Partition tolerance,指在某分区宕机或网络原因请求不到情况下,仍然能保证系统的可用性和数据一致性。

一个分布式系统,最多同时满足其中两项,但一定包含P,如果不满足P则分布式没有意义。


图片发自App


图片发自App


CP without A

舍弃可用性,保证一致性,例如redis hbase等存储系统,zookeeper分布式协调系统。在极端情况下,会舍弃一些请求以保证数据的一致性。

AP without C

为保证高可用性舍弃数据一致性,典型代表:淘宝、12306。12306票数在系统访问量高时可能不准确,在最终买票付款时提示无票,属于保证了数据最终一致性。是为了用户体验,不至于用户请求堵塞。多用于互联网系统。但是涉及钱财时必须保证一致性,比如支付宝系统。

二、BASE理论

BASE理论是ACP理论的延伸,是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。

基本可用:在高访问量情况下,允许损失部分可用,保证核心可用。比如电商大促时期的降级页面。

软状态:允许系统保护在中间状态,系统可用,数据一致性可以延时,比如异步同步数据。

最终一致性:是指系统中的数据经过一段时间后能达到一致的状态。

你可能感兴趣的:(分布式系统设计的几种理论)