减少新节点数据全同步花费时间的方法总结

23 篇文章 1 订阅
7 篇文章 0 订阅

背景

对于任何一条区块链来说,随着运行时间的增长,数据量的增加是不可避免的一件事。那对于新加入的节点来说,需要同步的历史数据就会越来越多,同步数据花费的时间也会越来越长。这对于节点参与的积极性是有着不利的影响的。本文主要讨论能够减少新节点数据全同步花费时间的几种方法(目前主网全同步数据需要2天时间)。

同步的耗时因素

讨论具体方法之前,先考虑下同步数据时花费时间的具体耗时因素。

数据量 : 数据总量只会越来越多,属于不可控因素

网络带宽 : 可通过增加带宽来提高数据的下载速度

服务器硬件(内存,硬盘,CPU) : 硬件性能越高,对于同步的区块数据的处理就越快。

同步模式:快速同步与全同步因为同步模式不一样,同步花费的时间不一样。本文数据同步花费时间过长的问题就是针对全同步模式来说的。

方法总结

1、提升网络带宽,硬件性能

提升内存,CPU,特别是硬盘的性能,对同步数据的处理效率会有较大的提升。

缺点是增加了矿工的成本,不能从根本上解决问题。

2、将区块数据集中存储到公开地址,如公有云

新节点提前到共有云下载需要同步的区块数据,节点ghpb程序启动后只需要同步之后的区块数据即可。

相对于全同步模式来说,数据总量不变,但花费时间应该会大大降低(主要受网络影响)。

3、快速同步模式

在不考虑历史状态数据的情况下, 可采用快速同步模式进行数据同步。目前主网的情况,快速同步模式下1个小时即可完成同步。

4、快速同步+历史状态数据重塑

如果需要历史状态数据,可以先使用快速同步将区块数据同步下来,然后在本地将历史状态数据重塑。 对于矿机而言,可以实现一边挖矿一边重塑历史状态数据。(考虑到对数据库的影响,可以限制下重塑历史状态数据的效率。)

5、调整同步起始位置 + 快速同步 | 历史状态数据重塑

对于新节点的加入,同步位置都是从创世块开始同步的,可以预想到随着交易量的上升,快速同步模式也并不能彻底解决耗时的问题,因此可以考虑将同步的起始区块调整为第N块,其中 0 <N<block.height,为了降低同步时间,可以将N尽量接近block.height。至于0~N之间的区块数据,可以在后台慢慢同步,同步完成后再本地重塑历史状态数据。

THE END!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值