硬件要求

推荐配置

下表是对开发(体验)环境和生产环境节点推荐的配置:

配置 开发(体验)环境 生产环境
CPU 1.5GHz * 2核 2.4GHz * 8核
内存 2 GB 8 GB
存储 40 GB 4 TB
带宽 1 Mb 10 Mb

提示

  • 如果选择 WeBASE-Docker 方式部署节点,部署使用的镜像会包含一个 fisco-bcos 节点WeBASE-Front 应用, 需要注意内存大小的选择。关于部分方式的类型,请参考:企业环境部署
  • 一个 WeBASE-Front 服务会消耗大概 700MB 左右内存。关于 WeBASE-Front 请参考:前置服务 WeBASE-Front

预估硬件资源

开发(体验)环境

对于开发(体验)环境,请参考:推荐配置 中开发(体验)环境推荐的配置。

提示

  • 开发(体验)环境一般使用开发工具中的一键脚本 build_chain.sh 在单台主机部署 4 个节点和一个 WeBASE-Front 服务。具体操作,请参考:开发工具部署

生产环境

生成环境作为正式提供对外服务的环境,需要在上线前对整体容量量进行一个预估。 根据容量预估的结果,来预估部署时需要的硬件资源。包括,主机数量,主机配置(CPU,磁盘,内存),网络带宽等等。

重要

  • 对部署所需要的硬件资源进行一个合理的预估,不仅能够提高硬件资源的利用率,还能提高运行环境的稳定性
  • 在部署生产环境之前,如果没有对预期环境做合理的容量评价,那么应用上线后,可能会出现大量的计算资源和存储资源闲置,造成资源利用率低;相反,还可能会出现流量过载,造成服务器高负载,服务崩溃,延迟高,用户体验差等问题

提示

  • 为了减少成本,一台机器只部署一条链的一个节点,一台机器可以部署多条链的一个节点

容量预估

容量是指系统可处理容纳的最大能力,包括:

  • 需要的区块链数量
  • 每条链的用户量
  • 每条链的交易量,每笔交易的平均大小,交易的流量大小
  • 每条链的 TPS
  • 每条链的 QPS

在做容量预估时,如果有现有流量数据,那么可以参考现有流量数据来进行预估;如果没有,那么可以根据具体的业务场景、业务类型、流量入口的数据、引流渠道等来估算容量的大小。

性能参考数据

影响区块链性能的指标因素很多,包括:

  • 硬件处理能力
    • 包括 CPU 主频、CPU 核心数、 内存大小、磁盘 IO、带宽速率等
  • 部署情况
    • 受参与共识的节点数量影响, 通常共识节点数量增多性能会有所下降
  • 算法
    • 包括共识机制、网络分发、压缩、编解码、加解密、签名验签等密码学算法
  • 系统参数
    • 业务逻辑本身的复杂程度,通常表现为业务智能合约的复杂度,合约逻辑更复杂导致计算需要更多资源,性能也会更低;

下面列出 腾讯云服务器 配置环境下的 两组 FISCO-BCOS 性能测试数据:

  • 测试服务器配置
选项 参数
服务器类型 腾讯云虚拟机
CPU Intel(R) Xeon(R) CPU E5-26xx v4 (8 核)
内存 16GB
硬盘 高速云硬盘,IOPS 上限 6000,读写吞吐上限 150MB/s
网卡 千兆网卡
操作系统 CentOS 7.3
  • 测试环境数据
配置 描述
FISCO-BCOS 版本 FISCO BCOS V2.7.0
MySQL 版本 5.5.64-MariaDB
主机数量 4 台主机,单链,4 节点(满足 3 * n + 1)
测试工具 Caliper
测试业务 转账
  • 测试结果数据 1:固定节点测试
密码算法 合约引擎 存储引擎 用户量 交易量 QPS TPS
非国密 Solidity Rocksdb 1W 100w 10000 9616
非国密 预编译 Rocksdb 1W 100w 18000 14543
非国密 Solidity Mysql 1W 100w 6000 5800
非国密 预编译 Mysql 1W 100w 8000 8553
国密 Solidity Rocksdb 1W 100w 8000 6281
国密 预编译 Rocksdb 1W 100w 9000 7183
  • 测试结果数据 2:多群组交易测试数据

多群组交易测试环境配置

  • 国密算法、Solidity 合约、RocksDB 引擎,PBFT 共识机制
  • 交易大小:1.48 KB;出块间隔:1s;每个区块最大交易数量:6000;交易池上限:150 0000
群组 用户量/群组 交易量/群组 TPS/群组 QPS/群组 CPU% 内存% 带宽Mbps
4 节点 1 群组 10000 500000 5924 8000 720 6 In: 35
Out: 34
4 节点 4 群组 10000 500000 1364 2000 750 28 In: 42
Out: 32
4 节点 8 群组 10000 200000 629 1000 780 32 In: 42
Out: 32
4 节点 16 群组 10000 100000 261 500 790 38 In: 42
Out: 31
4 节点 32 群组 10000 50000 129 300 790 61 In: 48
Out: 30
4 节点 64 群组 10000 20000 43 100 790 86 In: 38
Out: 25

磁盘类型

重要

  • 区块链的应用中,会存在同步大量链数据的场景,特别是一台主机上部署多条链的节点(一条链一个节点),此时对硬盘的性能要求相对会比较高。所以,在进行硬件资源评估之前,一定要选择合适的磁盘类型。

下图是腾讯云的的磁盘类型及性能:

磁盘类型 随机 IOPS 吞吐量(MB/s) 时延
增强型 SSD 最大随机 IOPS = 1800 + 存储容量(GB)× 50
且最大随机 IOPS 不超过50000
最大吞吐量 = 120 + 存储容量(GB)× 0.5
且最大吞吐量不超过350MB/s
0.3 - 1ms
SSD 最大随机 IOPS = 1800 + 存储容量(GB)× 30
且最大随机 IOPS 不超过26000
最大吞吐量 = 120 + 存储容量(GB)× 0.2
且最大吞吐量不超过260MB/s
0.5 - 3ms
高性能 最大随机 IOPS = 1800 + 存储容量(GB)× 8
且最大随机 IOPS 不超过6000
最大吞吐量 = 100 + 存储容量(GB)× 0.15
且最大吞吐量不超过150MB/s
0.8 - 4ms

提示

  • 推荐至少使用高性能磁盘(吞吐量 150MB/s 左右);如果交易量很小,可以考虑使用普通云磁盘;

重要

  • 在运维监控时,也要多注意磁盘的 IO 指标;
  • 如果使用云服务,或者平台服务,尽量使用云磁盘存放部署时生成的节点配置文件和区块链的数据文件(配置文件目录中的 datalog 目录),防止主机销毁而导致数据跟随系统磁盘丢失;

预估硬件资源

完成容量预估后,参考压测数据和 推荐配置 中生产环境推荐的配置,预估所需要的硬件资源:

  • 机器配置
    • CPU 核心数;
    • 内存大小;
    • 硬盘类型(IO 性能),硬盘大小;
  • 机器数量
    • 机构的节点数量,可以根据机构的权重来分配;
    • 每个机构至少有 2 个共识节点;
    • 由多个机构组成群组时,每个群组共识的节点数量至少为:3 * n + 1( n 表示系统可容错的节点数目,为大于等于 1 的整数)。由于共识节点自身消耗和数量呈线性相关,所以共识节点的数量不是越多越好,推荐 n 的值为 1,2 即可;
    • 每个机构适当添加观察节点,数量根据机构情况来定;
  • 网络带宽