主题
07 总体架构与部署边界
07.1 架构概览
平台采用分层、职责分离的许可型架构。对外接入、业务编排、Token 处理、账本最终性、身份与密钥管理、数据存储及可观测性相互协作,但不应由任一单点服务同时承担全部职责。
图中为逻辑边界,不替代正式网络拓扑、端口矩阵和部署清单。生产网络分区、主备模式、节点数量和跨数据中心部署依赖甲方基础设施与性能/灾备要求确认。
07.2 组件边界
| 层级 | 组件 | 主要责任 | 不应承担的责任 |
|---|---|---|---|
| 接入层 | Facade、机构接口 | 协议适配、认证、输入校验、访问控制 | 账本权威状态或私钥托管 |
| 业务控制层 | Central、BizHub | 管理、规则、审批、机构协同、结算编排 | 绕过账本直接确认数字货币最终性 |
| Token 业务层 | Issuer、Wallet Node、Endorser、Auditor | 发行、持有、交易、背书、审计职责 | 未授权跨机构数据访问 |
| 账本层 | Orderer、Committer、Query | 排序、验证、提交、最终性、查询 | 业务 UI 与政策审批 |
| 信任层 | CA、KMS/HSM | 证书、密钥、签名和生命周期控制 | 业务规则裁决 |
| 数据与运行层 | PostgreSQL、Redis、OTel 等 | 持久化、协调、遥测、备份与恢复 | 代替应用层授权 |
07.3 当前项目技术基线
当前代码库可见的业务组件包括 cbdc-facade、cbdc-central、cbdc-bizhub 和 Token 节点(Issuer、Wallet Node、Endorser、Auditor);账本相关组件包括 Fabric-X Orderer、Committer 和查询能力;身份与签名能力通过 CA 与 Sign-KMS/HSM 集成提供。实现细节参见系统整体架构和cbdc-solution 架构。
实际生产部署应以获批版本、环境配置和容量设计为准。开发用 Docker Compose、样例端口和默认配置不构成生产架构承诺。
07.3.1 Wallet Cluster 与钱包服务分片
Wallet Cluster 是平台侧承载钱包执行能力的逻辑集群,由一个或多个 Wallet Node 分片组成。Wallet Node 是平台执行组件,不等同于商业银行或某一种钱包类型。它负责其服务范围内的钱包注册和查询、Token/UTXO 管理、交易准备与提交、余额查询,以及钱包所有权策略的本地执行投影。
钱包相关请求按以下路径路由:
text
银行系统 → Facade → 根据 wallet_id 解析服务分片 → Wallet Node → Fabric-X 账本各组件的责任边界如下:
| 组件 | 对钱包的责任 |
|---|---|
| Facade | 认证银行调用方;按钱包 ID 将钱包相关请求路由到内部服务分片;不向银行侧暴露分片拓扑 |
| BizHub | 管理钱包 ID 分配、生命周期、所属机构和钱包所有权策略,是相关控制面信息的权威来源 |
| Wallet Node | 保存并执行该分片所需的钱包投影和本地 Token/UTXO 状态 |
| Fabric-X 账本 | 保存最终 Token 所有权、交易顺序和提交结果 |
每个钱包在任一时刻只由一个 Wallet Node 分片服务。institution_code 表示钱包所属银行,shard_code 表示平台内部执行分片,两者不得混用:一个分片可以服务多个机构和多个钱包类别;扩展部署中,同一机构的钱包也可以分布到多个分片。
当前已实现的首发基线为单 Wallet Node 分片:所有有效钱包均解析到 shard 1。Facade、BizHub 和 Wallet Node 使用同一 ShardOf(wallet_id) 规则;启动检查会拒绝当前路由规则无法覆盖的第二个 Wallet Node,避免产生静默误路由。因此,当前版本不将多 Wallet Node 分片表述为已经交付的生产能力。
多分片属于后续扩展能力。正式启用前必须通过 ADR 明确放置算法、路由表权威来源、扩缩容和迁移流程、跨分片交易处理、故障切换、对账及验收证据。可选方案包括完整钱包 ID 哈希、UID 区间或由 BizHub 管理的放置映射。分片信息不编码进钱包 ID,以保证重新分片时不需要重新签发钱包 ID。
07.3.2 分片术语边界
本方案中存在三种用途不同的“分片”,不得相互替代:
| 分片类型 | 作用 | 是否决定钱包业务类别 |
|---|---|---|
| Wallet Node 分片 | 划分钱包执行、Token/UTXO 和请求处理负载 | 否 |
| Fabric-X Orderer/Batcher 分片 | 划分交易批处理和排序负载 | 否 |
| Redis、缓存或锁分片 | 降低本地或分布式并发竞争 | 否 |
Wallet Node 分片与 Fabric-X 排序分片是不同层级的扩展机制;钱包类别、所属机构和生命周期状态均不能作为二者的同义词。钱包业务分类和标识规则见第 04 章。
07.4 跨组件调用规则
- 接口以版本化 gRPC/Proto 或批准的 HTTP 契约为准,禁止通过读取其他服务私有数据库集成。
- 所有同步出站调用须设置 deadline;重试只适用于幂等且明确可恢复的失败。
- 后台 Worker 和多副本任务应使用数据库锁、租约、幂等记录或等效控制,不能只依赖进程内锁。
- 资金类操作应在业务记录、账本状态和外部结果之间维持可恢复的状态机。
- 组件升级应验证新旧 API、Schema、配置和证书的兼容性。
07.5 部署边界与网络
生产部署至少区分外部接入区、业务服务区、账本区、数据区、密钥/证书区和监控运维区。跨区访问采用最小开放端口、受控网络策略、TLS/mTLS 与审计。数据库、缓存、KMS/HSM 管理接口和运维接口不得直接暴露到不受信网络。
正式部署图须列明:环境、区域/数据中心、节点/副本、网络区、入口与出口、端口、协议、证书身份、数据存储、备份位置、监控接入和故障切换路径。
07.6 架构验收证据
架构评审至少交付逻辑架构图、部署图、数据流图、接口清单、信任边界、端口/防火墙矩阵、组件责任矩阵、依赖清单和 ADR。各图表需绑定版本,并与实际部署配置一致。