在分布式存储系统中,对于提高性能、可用性、可拓展性来说都有相关机制可以保证,比如复制、切片等,但是一旦涉及到分布式系统中选主的问题,就比较难,因为网络是不可靠的,并且可能还有拜占庭将军问题。所以如何保证在多个分布式节点中,对于一个结果能够达成共识,也就是分布式共识问题。
什么是分布式共识
举一个例子,比如有3台服务器,分别部署在北京、上海、广州。每个服务器都可以处理交易,如果是线下,可以通过人工识别的方式记录转账交易。但是分布式环境下,3台机器都可以处理交易,如何保证一笔交易在3台服务器之间达成一致性。
分布式共识就是在多个节点均可独自操作或记录的情况下,使得所有节点针对某个状态达成一致的过程。通过共识机制,我们可以使得分布式系统中的多个节点的数据达成一致。
共识和一致性区别
一致性强调的是结果,共识强调的是达成一致的过程
分布式共识方法
挖矿:在交易中,如果提供服务需要收取一定的服务费,但是在分布式记账系统中,参与计算交易的服务器,也可以收取一定的费用,而所有服务器帮助记录交易并达成一致的过程,就是挖矿。
区块链整体结构:包含交易信息的区块从后往前有序链接起来的数据结构。
区块:很多交易数据的集合,包含区块头和区块体。
区块头:前一区块的哈希值、本区块的哈希值和时间戳。
区块体:存储交易数据。
3 种主流的解决分布式在线记账一致性问题的共识技术,即:PoW(Proof-of-Work,工作量证明)、PoS(Proof-of-Stake,权益证明)和 DPoS(Delegated Proof of Stake,委托权益证明)。
PoW
PoW的核心是谁的计算能力强,谁就可能获取到记账权。