減少新節點數據全同步花費時間的方法總結

背景

對於任何一條區塊鏈來說,隨着運行時間的增長,數據量的增加是不可避免的一件事。那對於新加入的節點來說,需要同步的歷史數據就會越來越多,同步數據花費的時間也會越來越長。這對於節點參與的積極性是有着不利的影響的。本文主要討論能夠減少新節點數據全同步花費時間的幾種方法(目前主網全同步數據需要2天時間)。

同步的耗時因素

討論具體方法之前,先考慮下同步數據時花費時間的具體耗時因素。

數據量 : 數據總量只會越來越多,屬於不可控因素

網絡帶寬 : 可通過增加帶寬來提高數據的下載速度

服務器硬件(內存,硬盤,CPU) : 硬件性能越高,對於同步的區塊數據的處理就越快。

同步模式:快速同步與全同步因爲同步模式不一樣,同步花費的時間不一樣。本文數據同步花費時間過長的問題就是針對全同步模式來說的。

方法總結

1、提升網絡帶寬,硬件性能

提升內存,CPU,特別是硬盤的性能,對同步數據的處理效率會有較大的提升。

缺點是增加了礦工的成本,不能從根本上解決問題。

2、將區塊數據集中存儲到公開地址,如公有云

新節點提前到共有云下載需要同步的區塊數據,節點ghpb程序啓動後只需要同步之後的區塊數據即可。

相對於全同步模式來說,數據總量不變,但花費時間應該會大大降低(主要受網絡影響)。

3、快速同步模式

在不考慮歷史狀態數據的情況下, 可採用快速同步模式進行數據同步。目前主網的情況,快速同步模式下1個小時即可完成同步。

4、快速同步+歷史狀態數據重塑

如果需要歷史狀態數據,可以先使用快速同步將區塊數據同步下來,然後在本地將歷史狀態數據重塑。 對於礦機而言,可以實現一邊挖礦一邊重塑歷史狀態數據。(考慮到對數據庫的影響,可以限制下重塑歷史狀態數據的效率。)

5、調整同步起始位置 + 快速同步 | 歷史狀態數據重塑

對於新節點的加入,同步位置都是從創世塊開始同步的,可以預想到隨着交易量的上升,快速同步模式也並不能徹底解決耗時的問題,因此可以考慮將同步的起始區塊調整爲第N塊,其中 0 <N<block.height,爲了降低同步時間,可以將N儘量接近block.height。至於0~N之間的區塊數據,可以在後臺慢慢同步,同步完成後再本地重塑歷史狀態數據。

THE END!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章