Hyperledger Fabric节点服务器对存储空间的消耗还是比较大的,在我实际生产体验的过程中,每一条请求数据大概仅2K左右,但实际占用空间远不止这点,每个节点都会对Block及链进行保存维护,也会将数据解析存储在本地,基本上1000万条数据会占用500G左右的空间。当然,这个仅供参考,不同的业务可能会略有差距。

我所负责的业务需要在联盟链搭建初期就导入巨量的数据,这个需求本就有些违背区块链的设计原则,已经把它当成一个数据库来使用了,这样庞大的业务量在实际处理过程中也遇到很多的麻烦,最明显的就是服务器性能的各种瓶颈,还要控制请求的次数和频率。

一般情况下,不会出现大批量导数的时候,节点服务器采用8C8G1T的配置足够用很久了,我这边因为业务原因,服务器采用16C16G3T,内存是绰绰有余,8G甚至4G也能满足没问题,但CPU就明显不足,这个官方也没有给出一个建议配置,只能自己摸索。

在一些网络博文中可以找到一些官方资料的线索,比如Hyperledger Fabric 1.0的目标是支持1000TPS,且实验室数据已经达到300~400TPS了。这些文章没有明确到底是节点服务器还是排序服务器广播的值,在实际操作中一台16C16G的服务器完全没有达到文档中所说的那样,节点服务器大约在50~70之间,排序服务器广播的在60~80之间,这可能是自己没完全摸清楚Hyperledger Fabric性能优化这一块。

日常使用最低配置建议:

服务器类型 建议配置 备注
zookeeper 4C+4G+500G 磁盘有扩容需求
kafka 4C+4G+500G 磁盘有扩容需求
orderer 8C+4G+500G 磁盘有扩容需求
peer 4C+4G+3T 磁盘有扩容需求,如大批量数据导入,则cpu提前做好扩容

如果存在大批量数据导入的情况,orderer和peer的配置建议均高于16C+16G,以免数据导入过程中容器down掉从而导致数据丢失的情况发生。

接着说下Fabric容器的问题,因为区块链的项目才开始接触容器的概念,在使用的时候对目录存储这块有所了解。

在将HyperLedger Fabric项目部署到生产之前,需要先将其存储根目录做下调整,以免日后遇到存储目录磁盘充满的情况。

HyperLedger Fabric使用的是Docker容器,默认的挂载路径是/var/lib/docker,这个是挂载在磁盘第一目录下,即如果不做修改,今后备份、搬迁及扩容等都是大问题。

这里有两个比较简洁的解决方案:

一:服务器配置之初安装docker时就指定其在额外挂载磁盘中。

这个意思很简单,即新挂载磁盘到linux的data目录下,docker容器就安装到该目录下,docker的卷宗文件也会在安装时指定位置,如/data/docker/docker,通过docker info命令即可查看,即下图所示:

二:通过修改docker配置文件来指定其卷宗文件存储目录。

这一步需要修改一个名为daemon.json的文件内容,该文件位于/etc/docker/目录下

具体步骤如下:

编辑或新建daemon文件

sudo vim /etc/docker/daemon.json

在该文件中指定docker的存储根目录

 {
"graph": "/data/docker/docker"
}

执行docker重新加载当前配置信息

sudo systemctl daemon-reload

重启docker服务

sudo systemctl restart docker.service

至此,我们再次执行

docker info

来查看docker的存储目录位置,此时结果应该已经如第一种方法中的图示一样。

当然,该方法需要在部署生产之前就做好,切勿临时变更。

Hyperledger Fabric服务器配置及修改Docker容器卷宗存储根目录/位置的更多相关文章

  1. Docker(十七)-修改Docker容器启动配置参数

    有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...

  2. 【解决】修改 docker 容器时间与宿主机不同

    修改 docker 容器时间 需求: 这几天,开发提了个需求 "测试需要模拟未来某天的业务,发现容器里面没有修改时间的权限",想在我们 k8s 集群上,调整容器时间 解决方案: 使 ...

  3. 修改Docker容器启动配置参数

    有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...

  4. Docker(33)- 如何修改 docker 容器的端口映射

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 问题背景 docker run ...

  5. Docker(34)- 如何修改 docker 容器的目录映射

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 问题背景 docker run ...

  6. 修改 Docker容器 自动启动/不自动启动,挂载路径,存储位置

    有时候创建容器时忘了添加参数 --restart=always,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker conta ...

  7. 解决docker容器中文乱码,修改docker容器编码格式

    前台上传文件到服务器后,服务器返回给前台的文件列表中出现中文乱码,所有的中文文件名全部变成?,英文文件名则正常显示. 问题经过定位,发现后台代码的multipartfile类在执行transterto ...

  8. 修改docker容器的端口映射

    大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改 ...

  9. 修改Docker容器的时间和宿主时间一致

    在查看容器的日志的,发现时间有和宿主主机时间相差有8个小时,而且宿主主机使用的是CST时间,容器容器使用的是UTC时间 主机时间 [root@hz-d-crm01 ~]$ date Thu May 2 ...

随机推荐

  1. 【洛谷】【堆】P1801 黑匣子_NOI导刊2010提高(06)

    [题目描述:] Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两 ...

  2. k8s存储 pv pvc ,storageclass

    1.  pv  pvc 现在测试 glusterfs  nfs  可读可写, 多个pod绑定到同一个pvc上,可读可写. 2. storageclass  分成两种 (1)  建立pvc, 相当于多个 ...

  3. NSPredicate的使用

    简述 NSPredicate谓词条件过滤器,一般用于过滤数组数据,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取. 常用函数 创建谓词 + (NSPredicate *)predic ...

  4. Spring源码分析(八)AbstractBeanDefinition属性

    摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 在上一篇中已经完成了XML文档到GenericBeanDefiniton ...

  5. ps命令使用详解

    转自:http://blog.csdn.net/lsbhjshyn/article/details/18549869 ps:要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程 ...

  6. ZOJ3202-Second-price Auction(根据输入输出判断是队列还是栈)

    A Stack or A Queue? Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu S ...

  7. JS基础-组成

    类型 前缀 类型 实例 数组 a Array aItems 布尔值 b Boolean bIsComplete 浮点数 f Float fPrice 函数 fn Function fnHandler ...

  8. 【Linux】LVM逻辑卷管理和RAID

    LVM概述: 是对磁盘分区进行管理的一种机制 是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不 够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现一种磁盘空 ...

  9. 高德地图API(流程法)整理分析

    [高德地图API(流程法)分析]: 前言:公司现在的网约车项目,使用的是高德地图,因为地图导航这一块的功能占比量比较大,为了方便大家对高德地图API的了解和学习使用,使用流程图把高德API分析整理了下 ...

  10. (收藏)mci 录音和播放

    原文http://blog.csdn.net/lvbian/article/details/18226741 最近在做Android与C#录音并互相通信的小东西.但是卡在C#录音这儿了.找了好久,说的 ...