主题
fabric-x-committer · 架构
本章只引用 README.md、docs/architecture.md、源码可定位的结构。具体协议细节请直接读 docs/architecture.md。
架构概览
来源:docs/architecture.md:16-78。
系统由 6 个核心服务组成
——
docs/architecture.md:20
服务拓扑(连接方向)出自 docs/architecture.md:26-78 的设计图。Sidecar、Coordinator 为单实例;Verifier、VC、Query 可水平扩展(具体实例区间为该设计文档的部署建议,代码未约束,故此处不列数字)。
TIP
cmd/committer 仅有 5 个可独立启动的服务(不含独立的 Notification Service)。mkdocs.yml:62 列出的 notification-service.md 指的是 Sidecar 内置的 Notifier gRPC 服务(service/sidecar/notify.go:32,134,注册于 service/sidecar/sidecar.go:174),并非独立微服务。
服务列表
来源:cmd/committer/config.go:17-21、docs/architecture.md、service/。
| 服务 | 配置 key | 状态 | 关键文件 |
|---|---|---|---|
| Sidecar | sidecar | 有状态(块存储) | service/sidecar/block_store.go |
| Coordinator | coordinator | 无状态 | service/coordinator/coordinator.go |
| Validator-Committer | vc | 无状态 | service/vc/ |
| Verifier | verifier | 无状态 | service/verifier/ |
| Query | query | 无状态 | service/query/ |
Coordinator 内部
来源:service/coordinator/coordinator.go。
| 项 | 行号 |
|---|---|
Service struct | :38-65 |
NewCoordinatorService(c *Config) *Service | :108 |
| 内部 5 个 channel(服务间通信) | :67-93 |
Service 持有:
dependencyMgr— 依赖图管理器signatureVerifierMgr— 签名验证器管理器validatorCommitterMgr— 验证-提交管理器policyMgr— 策略管理器queues— 5 个内部通道
Sidecar 内部
来源:service/sidecar/。
| 项 | 行号 |
|---|---|
blockStore struct | block_store.go:25 |
newBlockStore(ledgerDir string, syncInterval uint64, metrics *perfMetrics) | block_store.go:43 |
appendBlock(block *common.Block) error | block_store.go:117 |
GetBlockHeight() uint64 | block_store.go:133 |
Service struct(gRPC 服务实现) | sidecar.go:56 |
Deliver(srv peer.Deliver_DeliverServer) error(实现 peer.DeliverServer) | sidecar.go:483 |
Query 方法:GetBlockchainInfo / GetBlockByNumber / GetBlockByTxID / GetTxByID | sidecar.go:644-675 |
Notifier gRPC 服务(OpenNotificationStream) | notify.go:134 |
CLI 入口
来源:cmd/committer/main.go:27-34。
| 子命令 | 行号 | 用途 |
|---|---|---|
version | :32 | 版本 |
start | :33 | 启动服务(含子命令选择服务,见 start_cmd.go:25-34) |
healthcheck | :34 | 健康检查(同样 5 个服务,healthcheck_cmd.go:24) |
入口:committerCMD()(cmd/committer/main.go:27),用 cobra 框架(main.go:13)。
Loadgen CLI
来源:cmd/loadgen/main.go:38-48。
| 子命令 | 行号 | 用途 |
|---|---|---|
version | :44 | 版本 |
start | :45 | 启动负载生成;flag --only-namespace、--only-workload(:84-85) |
make-artifacts | :46 | 生成加密工件 + 创世块 |
关键依赖
来源:go.mod:9-55。
| 依赖 | 版本 | 用途 |
|---|---|---|
github.com/hyperledger/fabric-lib-go | v1.1.3 | — |
github.com/hyperledger/fabric-protos-go-apiv2 | v0.3.7 | — |
github.com/hyperledger/fabric-x-common | v0.2.5-0.20260526151648-855f12b2d438 | — |
github.com/yugabyte/pgx/v5 | v5.7.6-yb-1 | YugabyteDB / PostgreSQL 驱动 |
github.com/jackc/puddle/v2 | v2.2.2 | 连接池 |
github.com/spf13/cobra | v1.10.2 | CLI |
github.com/spf13/viper | v1.21.0 | 配置 |
google.golang.org/grpc | v1.81.0 | gRPC |
github.com/grpc-ecosystem/grpc-gateway/v2 | v2.29.0 | gateway |
github.com/consensys/gnark-crypto | v0.20.1 | 密码学(ZK) |
github.com/prometheus/client_golang | v1.23.2 | 指标 |
github.com/docker/docker | v28.5.2+incompatible | — |
github.com/stretchr/testify | v1.11.1 | 测试 |
go.uber.org/mock | v0.6.0 | mock |
go.uber.org/zap | v1.28.0 | 日志 |
github.com/cockroachdb/errors | v1.13.0 | error 包装 |
工具依赖(go.mod:44-55):markdownfmt/v3、api-linter/v2、protoc-gen-grpc-gateway、protoc-gen-go-grpc、protoc-gen-go、mockgen、goimports、gotestsum、gofumpt。