1. Fabric 网络架构概览:理解逻辑架构与物理部署
各位同学,咱们今天聊 Fabric 网络架构。说实话,我见过太多人一上来就扎进代码里,结果连 Orderer 和 Peer 谁管什么事都搞混。嗯,这章咱们先把骨架搭起来。
Fabric 的网络设计,说白了就是「把权力拆开」。传统区块链里,排序、执行、验证全揉在一起。Fabric 偏不——它把这三个角色拆成了独立的组件。为什么?为了隔离,为了安全,为了让你能控制「谁能看到什么」。
1.1 逻辑架构:四个核心角色
Fabric 网络里有四个核心组件,我习惯把它们分成「管理面」和「数据面」来看:
- Orderer(排序节点)——负责把交易排好序,打包成区块。它不碰链码,不碰账本状态,只管「谁先谁后」。
- Peer(对等节点)——真正干活的人。维护账本,执行链码,验证交易。每个 Peer 可以属于多个 Channel。
- CA(证书颁发机构)——发身份证的。Fabric 里所有身份都是基于 PKI,没有 CA 你连网络都进不去。
- Channel(通道)——逻辑上的隔离边界。不同 Channel 的 Peer 互相看不见对方的账本。
关键理解:Orderer 和 Peer 之间是松耦合的。Orderer 只管排序,Peer 只管验证和执行。这种分离让 Fabric 能支持「先执行后排序」的背书模型——这在其他区块链里是看不到的。
我在项目中遇到过一个问题:团队把 Orderer 和 Peer 部署在同一台机器上,结果 Orderer 磁盘满了,整个网络共识停摆。你看,物理上不隔离,逻辑上再隔离也没用。
1.2 物理部署架构:节点怎么摆
逻辑架构讲完了,咱们看看实际部署时怎么摆这些节点。我一般把部署模式分成三种:
| 部署模式 | Orderer 数量 | Peer 数量 | 适用场景 |
|---|---|---|---|
| 开发/测试 | 1(单节点) | 1-2 | 本地调试、功能验证 |
| 生产-小规模 | 3-5(Raft 集群) | 每组织 2-4 | 企业联盟链,10 个以内组织 |
| 生产-大规模 | 5-7(Raft 集群) | 每组织 4-8 | 跨行业联盟,高可用要求 |
你想想看,Orderer 集群为什么推荐奇数?因为 Raft 共识需要多数派存活。5 个 Orderer 能容忍 2 个挂掉,6 个也只能容忍 2 个——多一个反而浪费资源。
个人经验:我建议生产环境至少 3 个 Orderer,分布在不同的物理机架或可用区。别省这个钱——Orderer 挂了,整个网络都动不了。
1.3 网络隔离的基本概念
隔离,是 Fabric 安全设计的灵魂。为什么?因为联盟链里,参与方之间是「有限信任」的关系——我信任你不会篡改账本,但我不希望你看到我的商业数据。
Fabric 提供了三层隔离机制:
- Channel 隔离——不同 Channel 的 Peer 之间账本完全隔离。A 和 B 在 Channel-1 里交易,C 在 Channel-2 里完全看不到。
- 组织隔离——每个组织有自己的 MSP(成员服务提供者),Peer 只信任自己组织的 CA 签发的证书。
- 节点隔离——Orderer 和 Peer 物理分离,Orderer 不存账本数据,Peer 不参与共识。
我曾经踩过一个坑:两个组织共用同一个 Channel,结果 A 组织的链码里不小心把 B 组织的订单数据写到了世界状态里。虽然 Channel 隔离了网络流量,但链码级别的数据隔离没做好。嗯,从那以后我每次设计都要问一句:「这个数据,谁该看,谁不该看?」
注意:Channel 隔离不是万能的。如果同一个 Peer 加入了多个 Channel,它本地会同时存储多个账本。这时候如果 Peer 被攻破,攻击者可以拿到所有 Channel 的数据。所以,高安全场景下,建议每个 Channel 使用独立的 Peer 集群。
1.4 架构总览图
下面这张图是我自己画的一个 Fabric 网络架构总览。它把逻辑角色和物理部署放在一起看,方便你理解整体关系。
1.5 隔离设计的关键原则
讲完架构,我想分享几条我自己总结的隔离设计原则:
- 最小权限原则——每个节点只给它能用的最小权限。Peer 不需要 Orderer 的私钥,Orderer 不需要链码代码。
- 物理隔离优于逻辑隔离——能用不同机器就别用同一台,能用不同容器就别用同一个进程。
- 网络隔离是基础——Orderer 和 Peer 之间应该走独立的网络接口,甚至 VLAN 隔离。
- 数据隔离要落实到链码——Channel 隔离了账本,但链码里的读写逻辑还得你自己把关。
避坑指南:我曾经见过一个项目,所有组织共用一个 Orderer 集群,结果一个组织的 Peer 发起了大量无效交易,把整个网络的排序性能拖垮了。后来我们给每个 Channel 分配了独立的 Orderer 节点,问题才解决。记住:共享 Orderer 集群是性能瓶颈,也是安全风险。
好了,这一章咱们把 Fabric 的逻辑架构和物理部署理清楚了。你心里应该有个底:Orderer 管排序,Peer 管账本,CA 管身份,Channel 管隔离。下一层,咱们会深入每个组件的安全配置——但那是后面的事了。