有不同的一致性算法,用于面向权限的区块链,如的Paxos筏拜占庭通用模型哪些共识算法是同步的…
*我不是分布式系统的专家,我仍会尝试回答您的问题。
在分布式系统中,人们使用一个底层模型,该模型假设有一些关于时间的属性(这个消息需要多长时间才能到达?)和一些关于故障类型的属性(协议中的节点可以做什么)错了??)。
通常用于分布式系统的三种主要类型的时序模型是同步模型,异步模型和部分同步模型。这些模型中的每一个都对在给定轮次的协议执行中节点之间的消息交换之间可能发生的时间长度(“能力”)做出一些保证。这种分类很重要,因为在分布式设置中,单个节点无法区分出现故障的对等节点和刚刚花费很长时间响应的对等节点。
在同步模型中,在节点发送消息和可以确定接收节点听到消息之间的时间上存在一些最大值(“pper bound”)T。您还可以在节点之间的速度相对差异上设置上限P(因此您可以考虑处理器速度较慢的计算机)。
在异步模型中,我们删除了上限T和P.消息可以任意长到达对等体,每个节点可以花费任意的时间来响应。当我们说任意时,我们包括“nfinity”,意味着某些事件发生需要永远。
两者混合的部分同步模型:T和P存在上限,但协议设计者不了解它们,任务设计机制仍然根据这一事实达成共识。在实践中,协议实现者可以实现类似于该模型的系统,给定现代网络/机器的真实特征(消息通常得到它们的去向)以及使用诸如超时之类的策略来指示节点何时应该重试发送消息。
记住上述事实,Paxos和Raft都属于部分同步模型。
拜占庭将军问题是任何分布式计算机系统网络面临的经典问题。目标是在存在恶意节点的情况下在所有参与者节点上保持相同的状态。
在分布式系统中,您经常需要处理一系列难题。
Things fail. You can never count on anything being reliable. Even if you have perfectly bug-free software, and hardware that never breaks, you鈥檝e still got to deal with the fact that network connections can break, or messages within a network can get lost, or that some bozo might sever your network connection with a bulldozer. (That really happened while I was at Google!) Given (1), you can never rely on one copy of anything, because that copy might become unavailable due to a failure. So you need to keep multiple copies, and those copies need to be consistent 鈥� meaning that at any time, all of the copies agree about their contents. There鈥檚 no way to maintain a single completely consistent view of time between multiple computers. Due to inconsistencies in individual machine performance, and variable network delays, variable storage latency, and several other factors, there鈥檚 no canonical way of saying that for two events X and Y, 鈥淴 happened before Y鈥�. What that means is that when you try to maintain a consistent set of data, you can鈥檛 just say 鈥淩un all of the events in order鈥�, because while one server maintaining one copy might 鈥渒now鈥� that X happened before Y, another server maintaining another copy might be just as certain that Y happened before X.
简而言之,一切都可能在任何时候失败;失败后,参与者可以恢复并重新加入系统;任何系统中没有任何部分以积极的对抗方式行事(拜占庭故障可能是由于恶意软件)。
为了解决这个问题,我们有一致的算法,目的是让所有参与者同意相同的状态。 共识涉及多个服务器就价值达成一致。一旦他们就价值做出决定,该决定就是最终决定。当大多数服务器可用时,典型的一致性算法会取得进展。 Paxos和Raft是共识算法,它解决了公共或私人分布式网络中的拜占庭一般问题。