Skip to main content
一条链是一个独立的部署单元。本页给出三种形态:单机验证、单链生产、多链集群。

基础设施

生产部署需要三样共享基础设施: 多条链共用同一套基础设施:所有 Kafka topic、S3 键、etcd 键都以 chainID 开头。

形态一:单机验证

不需要 Kafka 和 S3。写节点开放 trace 命名空间,leafage-evm 用 HTTP 模式轮询。适合本地开发和适配新链时的验证。

形态二:单链生产

nodex-proxy 通常独立部署,覆盖所有链:

资源规划(ETH 主网)

leafage-evm 的 QPS 与 CPU 核数近似线性。要提高查询吞吐,只扩这一个服务的 CPU 和内存即可。 至少 3000 IOPS,推荐 SSD。AWS 上 gp3 的默认 3000 IOPS / 125 MB/s 足够稳态运行(12 秒一个区块),但首次启动的两个阶段压力更高:快照解压受顺序写吞吐限制,快照恢复后的追赶受随机读写 IOPS 限制。预留 20–30% 容量余量。
写节点开启 --ancient.prune 可以显著降低磁盘占用:历史区块体和收据在离开最近 90000 块窗口后被裁剪。下游消费者读 S3,不依赖写节点保留历史区块体。需要 --syncmode full

形态三:多链集群

写节点可以部署两个:都上传 S3,只有 Leader 发 Kafka。备节点在主节点故障时接管,避免数据链路中断。

常见运维操作

  1. 从 S3 下载 RocksDB 快照并解压到 --db-path
  2. 启动 leafage-evm,它会自动从 Kafka offset 或 S3 追赶到链头
  3. 启动时自注册到 etcd,consistency-checker 确认追上后把 stateType 改为 1
  4. nodex-proxy watch 到变更,健康检查通过后加入负载均衡池
整个过程通常在分钟级完成,不需要人工干预 proxy。
停止进程即可。leafage-evm 退出时删除自己的 etcd 键;即使异常退出,consistency-checker 也会在轮询失败后把它标记为离线并删除。
通过 nodex-proxy 的管理接口:
也可以直接改 etcd 的 {chainID}/writers/leader。切换后新 Leader 会等待 grace_period 再开始发布。
版本模式下,修改 etcd 的 {chainID}/version
  • consistency-checker 检测到版本变化后释放或争抢 singleton topic 的发布锁,并把 topic 对齐到新版本的进度
  • nodex-proxy 把基础链 ID 的请求改写到 {chainId}-{version} 的节点池
客户端不需要改动。
leafage-evm 的状态出现异常时,可以把链头回退到更早的区块,再从 S3 重新同步:

排查

参考