Skip to content

fabric-x-committer · 架构

本章只引用 README.mddocs/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-21docs/architecture.mdservice/

服务配置 key状态关键文件
Sidecarsidecar有状态(块存储)service/sidecar/block_store.go
Coordinatorcoordinator无状态service/coordinator/coordinator.go
Validator-Committervc无状态service/vc/
Verifierverifier无状态service/verifier/
Queryquery无状态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 structblock_store.go:25
newBlockStore(ledgerDir string, syncInterval uint64, metrics *perfMetrics)block_store.go:43
appendBlock(block *common.Block) errorblock_store.go:117
GetBlockHeight() uint64block_store.go:133
Service struct(gRPC 服务实现)sidecar.go:56
Deliver(srv peer.Deliver_DeliverServer) error(实现 peer.DeliverServersidecar.go:483
Query 方法:GetBlockchainInfo / GetBlockByNumber / GetBlockByTxID / GetTxByIDsidecar.go:644-675
Notifier gRPC 服务(OpenNotificationStreamnotify.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-gov1.1.3
github.com/hyperledger/fabric-protos-go-apiv2v0.3.7
github.com/hyperledger/fabric-x-commonv0.2.5-0.20260526151648-855f12b2d438
github.com/yugabyte/pgx/v5v5.7.6-yb-1YugabyteDB / PostgreSQL 驱动
github.com/jackc/puddle/v2v2.2.2连接池
github.com/spf13/cobrav1.10.2CLI
github.com/spf13/viperv1.21.0配置
google.golang.org/grpcv1.81.0gRPC
github.com/grpc-ecosystem/grpc-gateway/v2v2.29.0gateway
github.com/consensys/gnark-cryptov0.20.1密码学(ZK)
github.com/prometheus/client_golangv1.23.2指标
github.com/docker/dockerv28.5.2+incompatible
github.com/stretchr/testifyv1.11.1测试
go.uber.org/mockv0.6.0mock
go.uber.org/zapv1.28.0日志
github.com/cockroachdb/errorsv1.13.0error 包装

工具依赖(go.mod:44-55):markdownfmt/v3api-linter/v2protoc-gen-grpc-gatewayprotoc-gen-go-grpcprotoc-gen-gomockgengoimportsgotestsumgofumpt