区块链启蒙基础 › 第 1 章 › 第 2 节

第 2 节 全局视角

1. 核心问题

什么是软件架构?区块链在软件系统的“全局图”里处在什么位置,它的根本目的是什么?


2. 生活化比喻与通俗案例

买车挑引擎

买车时,同一款车往往可以选不同的发动机:柴油、汽油或者电动。这是“模块化”的结果,也就是把上一节的分层思想用在了汽车上。

  • 外面看一模一样:两辆车外观、内饰相同,都能载人、开空调、听音乐。
  • 引擎盖下大不相同:动力不同,驾驶感受就不同;而且引擎还会影响车价、使用成本、燃料种类、排气系统,甚至刹车的尺寸。

软件也一样:两个外表、功能完全相同的转账 App,底层用来“驱动”它的架构可能完全不同。带着这个画面,就容易看懂区块链在全局中的位置。

一个人拍板 vs. 大家商量

  • 集中式像“一个人拍板”:所有事都由老板决定,效率高;可老板一旦联系不上,整个公司就停摆,这叫单点故障。
  • 分布式像“合伙人圆桌会”:几位合伙人地位平等,少一两个人照样能按规则运转;代价是每件事都要沟通协商,花时间花精力。

3. 核心原理解析

用分层看支付系统

把上一节的“层次 × 切面”用在一个支付系统上:

层次 \ 切面功能性切面非功能性切面
应用层存款、取款、转账、查询余额界面美观、操作简单、转账速度快、参与者多
实现层软件架构:集中式或分布式全天 24 小时可用、防欺诈、维护完整性、保护用户隐私

实现层功能性那一格写的是“用什么技术让系统运转”,也就是给系统选“引擎”:选用哪种软件架构。本节接下来讨论的,正是集中式和分布式这两种架构。

两种软件架构

软件架构是指系统的各个组成部分(也叫节点)如何组织、彼此如何连接。最基本的两种架构正好是两个极端:

  • 集中式架构(Centralized):所有组件都围绕并连接到一个中心组件;外围组件之间不直接相连,每个只和中心有一条连线。
  • 分布式架构(Distributed):组件彼此连成网络,没有任何中心的协调或控制。不是每个节点都和其他所有节点直连,但任意两个节点至少能间接连通。

更完整地说,分布式系统是多台独立的计算机,借助通信介质相互协作、共同完成某个目标,而且没有任何中心化的控制或协调者。

分布式系统的四个优点

  1. 算力更强(Higher Computing Power):整体算力是所有联网计算机算力之和。事实证明,即使由性能一般的电脑组成,分布式系统的算力也能超过单台超级计算机。
  2. 成本更低(Cost Reduction):过去 20 年里,普通电脑、内存、硬盘和网络设备价格大幅下降。分布式系统由很多台电脑组成,初始成本其实比单台电脑高;但和性能相当的超级计算机比,它的建造、维护和运营成本低得多。而且替换其中某台电脑,对整个系统几乎没有影响。
  3. 可靠性更高(Higher Reliability):个别机器宕机,整个网络仍能继续运转;没有单点故障,一个节点坏了,其他节点可以接手。
  4. 自然增长(Natural Growth):再接入几台电脑,算力就能细粒度地一点点增加,正好契合需求逐步增长的方式。单台电脑则不同,在被换成更强的机器之前,算力一直不变,增长是“跳台阶”式的。

分布式系统的五个缺点

  1. 协调开销(Coordination Overhead):没有中心来指挥,协调只能由成员自己完成,这要耗费精力和算力,而这些本可以用在真正的计算任务上。
  2. 通信开销(Communication Overhead):协调离不开通信,需要通信协议,还要收发和处理消息,同样消耗算力。
  3. 依赖网络(Dependency on Networks):计算机靠网络传消息,网络自身的问题会影响通信与协调;没有网络,就没有分布式系统。
  4. 程序更复杂(Higher Program Complexity):软件必须额外处理协调、通信和网络使用等问题。
  5. 安全问题(Security Issues):通过网络发送数据,就可能被不可信的人截取和滥用。网络的访问限制越少,安全问题就越大。

分布式对等系统(Peer-to-Peer)

对等网络是一种特殊的分布式系统。其中每台计算机(也叫对等节点或节点)把自己的算力、存储、数据或带宽直接提供给网络中的其他成员,没有中心协调点。所有节点的权利和角色平等,既是资源的提供者,也是使用者。

它常用于文件共享、内容分发、隐私保护等。核心思路很简单:把用户的电脑变成组成系统的节点。用的人越多,系统就越大越强。这个思路及其带来的挑战,是后面几节的主线。

集中与分布的混合

集中式与分布式是两个对立的极端,工程师自然会把两者混合。有两种典型形态,以后理解区块链在现实中的应用时会用到:

  • 分布式系统中的中心:乍看节点连成了网,但所有节点都连到中间那一个节点上,表面分布式,实际是集中式。例如早期的音乐分享软件 Napster:用户之间直接传文件,但查找歌曲要靠一台中央目录服务器(下一节详述)。
  • 中心内部的分布式系统:乍看是集中式,外围节点都只连一个大的中心;但这个中心内部其实是一个分布式系统,外围节点甚至可能根本不知道它的存在。

这两种形态的共同点是:很难看出它们的真实性质。到底是集中式还是分布式?未必要给它们起专门的名字,但要意识到它们的双重性质。以后讲区块链商业化时,还会回到这一点。

怎样识别分布式系统

混合架构让识别变得困难。拿不准时,就去找一个单一组件,比如唯一的数据库、名称或用户注册中心、登录/登出组件,或者一个能关停整个系统的紧急开关。找到了,这个系统就不是分布式的。

经验法则:只要存在某个单一节点或组件,一旦停用或失灵就能让整个系统瘫痪,那么不管它的架构看起来多复杂,这个系统都不是分布式的。

区块链的目的

设计软件系统时,选架构就像给车选引擎。架构的选择与应用层的功能无关,所以功能完全相同的系统,既可以是集中式的,也可以是分布式的;上面那个支付系统两种都能做。架构只是实现系统的手段。

两种架构各有优缺点,做事方式也不同,尤其是保证完整性的方法截然不同。这正是区块链登场的地方:区块链是在分布式软件系统中实现完整性的工具。所以,它可以看作实现层中用来达成某个非功能性特性的工具。

一句话:区块链的目的是在分布式系统中实现并维护完整性。

在分布式系统中实现完整性,听起来很技术、甚至有点枯燥。让人兴奋的是另一个问题:这个分布式系统做的是什么,它取代的又是怎样的集中式系统?下一节会讲对等系统如何改变了世界,以及区块链为什么也有同样的潜力。


4. 图解

分布式架构与集中式架构
图 1-2-1 分布式架构与集中式架构
点击查看大图
集中与分布的两种混合形态
图 1-2-2 集中与分布的两种混合形态
点击查看大图
同一支付系统的两种“引擎”与区块链的位置
图 1-2-3 同一支付系统的两种“引擎”与区块链的位置
点击查看大图

5. 小白速记要点

  • 架构是看不见的引擎:架构决定组件如何组织、如何连接;同样的应用层功能,可以用集中式实现,也可以用分布式实现。
  • 两个极端:集中式围绕一个中心;分布式由独立计算机协作,没有中心控制或协调。
  • 分布式的得与失:优点是算力强、成本低、可靠、可自然增长;代价是协调开销、通信开销、依赖网络、程序复杂、安全问题。
  • 经验法则:只要有一个能让整个系统瘫痪的单一组件,它就不是分布式系统。
  • 区块链的位置与目的:区块链属于分布式系统的实现层,目的是在分布式系统中实现并维护完整性。

6. 学习成果检测:十道练习题与解析

题目 1(单选题)

两辆外观、内饰完全一样的车,分别装了汽油发动机和电动机。这个比喻想说明什么?

  • A. 电动车的驾驶感受一定优于燃油车
  • B. 应用层功能相同的软件,在实现层可以选用完全不同的架构
  • C. 只要界面做得漂亮,底层怎么实现都无所谓
  • D. 只有应用层功能变化时,底层架构才需要改变
查看答案

答案:B

  • 解析:比喻说明应用功能与底层实现可以分开选择。同样是转账记账,底层既可以是集中式,也可以是分布式。

题目 2(单选题)

集中式架构最突出的弱点是什么?

  • A. 节点之间的通信流量过大
  • B. 存在单点故障,中心一旦失灵,整个系统停摆
  • C. 普通计算机的采购价格过高
  • D. 无法存储超过 100 个用户的数据
查看答案

答案:B

  • 解析:集中式系统所有组件都依赖中心,中心就是单点故障,中心失灵,整个系统停摆。

题目 3(多选题)

与单台超级计算机相比,分布式系统有哪些优点?

  • A. 算力更强(Higher Computing Power)
  • B. 综合成本更低(Cost Reduction)
  • C. 完全不受网络延迟影响
  • D. 可以通过添加电脑细粒度地自然增长(Natural Growth)
查看答案

答案:A、B、D

  • 解析:四个优点是算力更强、成本更低、可靠性更高、自然增长。C 错误,依赖网络恰恰是分布式系统的缺点。

题目 4(单选题)

判断一个自称“分布式”的系统是否名副其实,本节的经验法则是:

  • A. 看软件界面是否有科技感
  • B. 看官网是否支持多种语言
  • C. 看系统中是否存在某个单一组件,一旦失灵就能让整个系统瘫痪
  • D. 看参与运行的电脑是否超过一万台
查看答案

答案:C

  • 解析:经验法则:只要有一个单一组件能让整个系统瘫痪,就不是分布式系统,与界面、语言、节点数量无关。

题目 5(多选题)

分布式系统需要付出哪些代价?

  • A. 协调开销:没有中心,协调要由成员自己完成
  • B. 通信开销:需要通信协议,并收发和处理大量消息
  • C. 依赖网络:没有网络就没有分布式系统
  • D. 程序更复杂:软件要额外处理协调、通信和网络问题
查看答案

答案:A、B、C、D

  • 解析:四项都是分布式系统的缺点;另外还有第五个:安全问题。

题目 6(单选题)

小李做了一款文件共享软件:用户之间直接互传文件,但注册和搜索资源都必须连到小李家里唯一一台服务器。小李家一停电,所有人都无法登录和搜索。这个系统本质上属于:

  • A. 纯粹的分布式对等系统
  • B. 表面分布式、实际有中心的“分布式系统中的中心”
  • C. 不需要任何软件架构的本地系统
  • D. 高度可靠的容灾系统
查看答案

答案:B

  • 解析:文件传输看似点对点,但注册和搜索都离不开小李家的那台服务器,这台服务器一停系统就瘫痪,属于“分布式系统中的中心”。

题目 7(判断题)

银行系统的存款、取款、查流水等功能只能用集中式系统实现,分布式系统在原理上无法实现相同的功能。

  • ( )正确
  • ( )错误
查看答案

答案:错误

  • 解析:架构选择与应用层功能无关。同样的支付功能,既可以用集中式实现,也可以用分布式实现。

题目 8(判断题)

分布式系统通过网络传送数据,网络的访问限制越少,它面临的安全问题就越大。

  • ( )正确
  • ( )错误
查看答案

答案:正确

  • 解析:数据在网络上传送,可能被不可信的人截取和滥用;网络访问限制越少,安全问题越大。

题目 9(单选题)

对区块链最准确的定位是:

  • A. 应用层上一款供用户转账的手机 App
  • B. 一种由单一机构统一管理的集中式数据库
  • C. 分布式系统实现层中,用来实现和维护完整性的工具
  • D. 应用层中负责界面美观的非功能性特性
查看答案

答案:C

  • 解析:区块链不是应用层的 App,也不是集中式数据库,而是分布式系统实现层中用来实现和维护完整性(一个非功能性特性)的工具。

题目 10(情景分析问答题)

一家公司宣称推出了“纯分布式的社交应用”:全球 5000 台服务器存储用户图片,即使 1000 台损坏,图片仍然在线。但安全专家发现,用户每次打开 App 都必须先向公司唯一的认证服务器 auth.company.com 请求通行令牌;拿不到令牌,App 就直接退出。 请用本节的经验法则分析:这款应用是不是真正的分布式系统?为什么?

查看答案

结论:不是真正的分布式系统。

  1. 找单一组件:按经验法则,看有没有一个组件失灵就能让整个系统瘫痪。
  2. 事实:存储节点虽有 5000 台,但所有用户都必须经过唯一的认证服务器 auth.company.com。
  3. 后果:这台服务器一旦故障或关闭,全球用户都无法使用,5000 台存储节点也就没人用得上了。
  4. 定性:这属于“分布式系统中的中心”:存储是分布式的,但整个系统仍受制于一个单点。