追究不可能三角的真伪,一方面是因为伪概念给了伪项目生存的土壤,这很糟糕;另一方面是希望人们能把焦点集中到真正的问题上。
在区块链,有价值的不可能三角是分布式系统CAP定理。
它是指分布式系统无法同时确保一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)。
Eric Brewer在ACM PODC会议(ACM Symposium on Principles of Distributed Computing,分布式计算领域的顶级学术会议)上首次提出了CAP 猜想,之后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了该猜想,使之成为一个定理。
CAP定理是分布式系统领域最重要的原理之一,深刻影响着分布式计算与系统设计的发展。
CAP定理一致性、可用性和分区容忍性的具体含义如下:
1.一致性:如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性。
2.可用性:所有读写请求在一定时间内可以得到响应,不会一直等待。
3.分区容忍性:系统中的网络可能发生分区故障,即节点之间的通信无法保障,但这不影响系统正常服务。
CAP 定理认为分布式系统最多只能同时实现上述三个要素中的两个。在某时刻如果满足AP,即分隔的节点对外服务,但不能相互通信,这将导致状态不一致,不能满足C;如果满足CP,那么在网络分区的情况下为达成C,请求只能一直等待,这将无法满足A;如果满足CA,即在一定时间内要达到节点状态一致,则要求不能出现网络分区,这将不能满足P。
这一结论告诉设计者不要浪费时间去研究如何兼顾这三要素,因为根本不可能,在进行分布式架构设计时,必须根据具体系统的需求做出取舍。