同步、半同步、异步的理解
同步、半同步、异步定义一
- 同步是指节点之间的延迟存在一个已知的 Δt 上界
- 半同步是指节点之间的延迟存在一个 Δt 的上界,但是不知道上界是多少,但是消息一定会传送到。
- 异步只保证最终消息可达,对传输时间的上限没有假设。
同步、半同步、异步定义二
- 同步(synchronous)网络假设网络中的消息能够在一个已知的时间 Δ 内到达,这是一种非常理想的假设,实际的工程实践中很难保证这一假设成立。
- 半同步(partially synchronous)网络假设在一个 GST(global stabilization time)事件之后,消息在 Δ 时间内到达。随着网络技术的发展,这种假设已经能符合我们生活中遇到多绝大多数网络情况,而且设计和实现这类协议的难度不高,因此很多常见的协议比如 Paxos、Raft、PBFT 等都是基于半同步网络假设设计的共识协议。这些协议虽然能够保证在任何网络情况下系统的一致性,但在异步网络下会丧失活性。
- 异步(Asynchronous)网络只保证消息最终能到达,并没有到达时间的限制,这几乎涵盖所有网络情况。由此可见,异步 BFT 协议的鲁棒性最强,即使在极端网络条件下协议也不会丧失活性。
比特币为什么是同步协议
同步和半同步的区别在于,同步假设下,超过设定的时间,系统安全性会丧失。半同步假设下,超时之后系统安全性不会丧失。
在比特币系统中,如果节点 10 分钟内无法收到新区块,那么整个网络有很大的风险会出现分叉,当网络出现分叉时,系统的安全性已经受到威胁,因此,比特币可以理解为同步协议。
CAP 理论
一个分布式系统中,Consistency、Availability、Partition tolerance 无法同时获得。
- 一致性(Consistency):任何事务应该都是原子的,所有副本上的状态都是事务成功提交后的结果,并保持强一致;
- 可用性(Availability):系统(非失败节点)能在有限时间内完成对操作请求的应答;
- 分区容忍性(Partition):系统中的网络可能发生分区故障(成为多个子网,甚至出现节点上线和下线),即节点之间的通信无法保障。而网络故障不应该影响到系统正常服务。
CAP 原理认为,分布式系统最多只能保证三项特性中的两项特性。
FLP 不可能原理
FLP 不可能原理:在网络可靠、但允许节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性共识算法(No completely asynchronous consensus protocol can tolerate even a single unannounced process death)。
参考
Consensus: Bridging Theory and Practice (stanford.edu)
FLP 不可能原理 - 区块链技术指南 (gitbook.io)
[Synchrony, Asynchrony and Partial synchrony](Synchrony, Asynchrony and Partial synchrony (decentralizedthoughts.github.io))
[共识问题之三:拜占庭容错(BFT)共识算法的发展历程](共识问题之三:拜占庭容错(BFT)共识算法的发展历程 - 知乎 (zhihu.com))