前语

由于最近 web3.0 的概念很火,web2.0 是中心化体系,web3.0 是去中心化体系。作为一名 web2.0 的服务端开发,在学习 web3.0 相关技术的时分,情不自禁地会比照 web2.0 和 web3.0 在技术完成上的区别。

在 web2.0,咱们用 Mysql、Redis、MongoDB、HBase、Elasticsearch 乃至 ZooKeeper,这些数据库无论在体系中的职责是什么,我都把它们归为中心化数据库(默认集群版别,单机版不在此次评论规划之内)。
中心化数据库架构下,一般有多个数据库节点,都属于同一个办理者;多个数据库之间需求达到数据共同

而在 web3.0,存储的条件便是区块链,每一个区块链的用户都是独立的个体,都保留了一份完好的数据。所以,web3.0 也有多个数据库节点,可是每个数据库节点的办理者都不相同,可以了解为用户便是办理者;多个数据库之间也需求数据共同性;这便是去中心化的数据库。

数据库类型 / 特征 节点个数 办理员 数据共同性(共同)
中心化数据库 多个 一个 需求
去中心化数据库(区块链) 多个 每个用户各办理一份完好数据 需求

私以为,中心化体系和去中心化体系最大的区别就在于数据库节点之前建立数据共同的进程。 在讲建立数据共同之前,咱们先来看一个网络通信里的经典问题:拜占庭将军问题

拜占庭将军问题

9 位拜占庭将军别离率领一支军队要共同围困一座城市,由于这座城市很强壮,假如不和谐统一将军们的举动战略,部分军队进攻、部分军队撤离会造成围困失败,因而各位将军有必要经过投票来达到共同战略,要么一起进攻,要么一起撤离。

由于各位将军别离占据城市的一角,他们只能经过信使互相联系。在和谐进程中每位将军都将自己投票“进攻”仍是“撤离”的消息经过信使别离告诉其他一切将军,这样一来每位将军根据自己的投票和其他将军送过来的投票,就可以知道投票结果,然后决定是进攻仍是撤离。

而问题的复杂性就在于:

  1. 由于将军之间需求经过信使交流,即使一切的将军都是忠实的,派出去的信使也或许被敌军截杀,乃至被间谍替换,也便是说将军之间进行交流的信息通道是不能确保可靠性的。

  2. 将军中或许呈现叛徒,他们不仅可以投票给错误的决议计划,还或许会挑选性地发送投票。假设 9 位将军中有 1 名叛徒,8 位忠实的将军中呈现了 4 人投“进攻”,4 人投“撤离”,这时分叛徒或许成心给 4 名投“进攻”的将军投“进攻”,而给别的 4 名投“撤离”的将军投“撤离”。这样在 4 名投“进攻”的将军看来,投票是 5 人投“进攻”,然后发动进攻;而别的 4 名将军看来是 5 人投“撤离”,然后撤离。这样,共同性就遭到了损坏。

类比到数据库的话,数据节点便是将军,信使便是通信发出的网络数据包,每个数据节点都要经过通信对整个数据库的数据达到共同

中心化体系的共同算法

中心化的体系由于从规划上便是一个 一切者/组织 办理这个体系和一切的数据库节点。所以数据库节点不会发出虚伪信息——将军中不会有叛徒

这种场景下的经典分布式共同算法有,Paxos、Raft 等
Paxos 算法是Leslie Lamport于1990年提出的一种基于消息传递共同算法,能确保多副本数据强共同性与分区容错性;现已是当今分布式体系最重要的理论,为后续的如Raft、ZAB等算法、ZooKeeper、Etcd等分布式和谐框架奠定了根底.
Raft 算法是一个办理仿制式日志(replicated log)的共同算法 (consensus algorithm)。它的最终结果与 (multi-) Paxos 等价,也与 Paxos 一样高效,但结构(structure)与 Paxos 不同 —— 这使得它比 Paxos 更好了解,也更易于构建实践体系

算法进程描绘起来比较费篇幅,完好可以参考: Paxos 与 Raft 算法描绘

这儿只写一下大约,用比较简单了解的 Raft 算法举例。在 Raft 算法中,多个节点中只会有一个 Leader,这个 Leader 负责与客户端交互,发生的数据变化会同步给 FollowersFollowers可以供给读取数据的功用。这是一个一主多从的体系架构

中心化系统和去中心化系统的共识算法有什么区别?

整个 Raft 算法分为三部分:

  • Leader 推举:当时 leader 跪了或集群初始化的情况下,新 leader 被推举出来。
  • 日志仿制:leader 有必要可以从客户端接纳恳求,然后将它们仿制给Followers,强制它们与自己的数据共同。
  • 安全性:怎么确保上述推举和日志仿制的安全,使体系满意最终共同性。

将 Raft 算法类比到拜占庭将军问题上,就等于,先让一切将军投票,选出一个总将军,然后总将军作出一切的决议计划,其他将军仅仅跟随总将军。当然,条件是,将军中不能存在叛徒,所以经典的 Paxos 算法及其变种是没有拜占庭容错的。

区块链的共同算法

区块链的共同算法,与 Paxos 算法及其变种比照,引入了经济学的博弈算法,让进犯者的进犯成本远远大于收益
现在比较老练的区块链共同算法有 PoW(Proof Of Work)、PoS(Proof Of Stake)、DPoS(Delegated Proof of Stake)。

关于 PoW、PoS、DPos 的完成细节,可以参考 Proof-of-work-vs-proof-of-stake-Whats-the-difference 和 DPoS 缺失的白皮书

这儿就不用太多篇幅介绍了。只说一下大致的完成方法。

首先区块链的结构是部分数据组成一个区块,工作中的区块链有多个区块且在不断生成新的区块,每一个区块都有一个地址,区块依照生成时刻排序,生成时刻靠后的区块会存储上一个区块的地址。

中心化系统和去中心化系统的共识算法有什么区别?

一切的区块数据加起来便是在这个体系里发生的一切数据。整个进程分为:

  • 矿工出块:在区块链里,一个区块只能由一个节点掌握出块权,一切竞赛出块权的节点咱们称为矿工。而竞赛出块权的方法不同的共同算法也不同。
    • PoW:是纯算力竞赛。
    • PoS:PoW 会对算力有很大的浪费,所以 PoS 推出了经过 算力 + 持有币天 竞赛的方法,极大地节省了计算资源。
    • DPoS 是经过投票决出少量矿工之后,矿工依照顺序排队出块。
  • P2P网络:当矿工取得发块权之后,会生成最新的区块,并告诉全网同步最新的区块链。这个进程是由P2P网络完成的。包含用户发生的数据,也是经过P2P网络广播到全网,矿工才能把用户发生的数据打包成块。
  • 密码学:密码学是一切区块链的根底,可以说假如没有密码学的支撑,区块链将会退化成一般的分布式日志体系。区块链中首要使用了两类密码学算法,第一类是哈希算法,第二类是非对称加密算法

由于 DPoS 算法趋向于中心化体系,而Pow、Pos算法比较符合去中心化的概念。所以咱们将 PoW、算法类比到拜占庭将军问题上,就等于,一切将军都要竞赛经过算力竞赛,取得决议计划权,同步给一切的将军达到共同,假如有叛徒想要损坏这个共同,那一切的将军里至少要有 50% 以上的叛徒,才能把假造的决议计划作为新的共同同步给一切将军。

中心化体系和去中心化体系的共同算法比照

在比照之前,先介绍一个理论:

CAP 理论: CAP 定理是分布式体系范畴最重要的定理之一。即在规划分布式体系的进程中,共同性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance) 三者中,咱们只能挑选两个作为首要强化的点,别的一个必定会被弱化。

  • 共同性:体系的不同节点之间,数据要达到共同。
  • 可用性:整个体系的功用可以正常工作。这个是每个体系有必要要确保的。
  • 分区容错性:体系中任意信息的丢掉或失败不会影响体系的持续运作。这儿首要指的是拜占庭容错

从 CAP 的视点比照中心化体系和去中心化体系:

  1. 首先,两者都确保了可用性,可是显着去中心化体系(区块链)的可用性更强,乃至接近了 100%,这儿首要是考虑服务瘫痪的或许性,中心化体系只要被黑客进犯,乃至服务运维出问题,都会导致不可用;而要使像比特币、以太坊这种规划的区块链不可用,至少要全球规划的网络故障。
  2. 对于共同性,中心化体系节点同步的速度一般都可以快到毫秒等级;而区块链取决于矿工节点的数量,PoW 算法越往后出块速度越慢,现在比特币的出块速度大约在十几分钟,往后只会越来越慢;除了矿工的出块速度之外,出块之后的 P2P 网络扩散速度也会增加全节点达到最终共同的时刻。
  3. 分区容错性。区块链在规划上,界说了每个用户都是一个数据存储节点,所以几个数据节点信息丢掉乃至恶意篡改都不会影响整体;而中心化体系简直不支持拜占庭容错。
可用性 共同性 拜占庭容错
中心化体系 较弱 达到共同性速度非常快 不支持
去中心化体系(区块链) 较强 不要求速度,最终达到共同即可 支持

小结

经过比照可以发现,去中心化献身了达到共同的速度,然后确保高可用性和拜占庭容错。而中心化体系虽然不支持拜占庭容错,可是一切数据节点可以瞬间达到共同,实时性非常高

去中心化是人类对未来的美好愿景,是对垄断的反抗。可是去中心化体系并不能处理一切问题。中心化体系也不会因而退出历史舞台,反而会协助去中心化使用更好地落地。


参考:

  1. 区块链 从数字钱银到信誉社会 中信出版社图书(书本)
  2. 拜占庭将军与区块链
  3. 分布式共同性算法解析
  4. Proof-of-work-vs-proof-of-stake-Whats-the-difference
  5. DPoS 缺失的白皮书