区块链系统,首先是一个分布式系统,一致性问题是分布式领域最为基础也是最重要的问题。
1、定义
一致性( consistency ),是指对于分布式系统中的多个服务节点,给定一系列操作,在约定协议的保障下,试图使得它们对处理结果达成“某种程度”的认同。
分布式计算机集群系统中容易出现以下几个问题:
- 节点之间的网络通信是不可靠的,包括消息延迟、乱序和内容错误等;
- 节点的处理时间无法保障,结果可能出现错误,甚至节点自身可能发生宕机;
- 同步调用可以简化设计,但会严重降低分布式系统的可扩展性,甚至使其退化为单点系统。
2、绝对理想的一致性
分布式系统要达到绝对理想的一致性应该满足:
(1)可终止性( termination ):一致的结果在有限时间内能完成;
有限时间内完成,意味着可以保障提供服务( liveness ) 。这是计算机系统可以被正常使用的前提。需要注意,在现实生活中这点并不是总能得到保障的。例如取款机有时候会出现“服务中断”;拨打电话有时候是“无法连接”的2
(2