国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用快照啟動 FIBOS、EOS 節點

notebin / 2419人閱讀

摘要:快照實現的原理使用快照啟動相應的源碼地址,截取部分代碼從源碼中可以看出當啟動添加參數時會以快照中的數據啟動。

為什么使用快照 1. 快速同步節點

EOS 的日志文件已經達到了 160G,同步一個 EOS 全節點大約需要耗時 10-15 天的時間,時間成本非常高。作為一個普通 Dapp 開發者,我們并不需要之前的區塊數據,所以完全不需要浪費大把時間去同步一個 EOS 全節點。通過快照同步的方式能夠很好的滿足我們的需求,使用最新快照啟動的節點,能夠在 3~4 分鐘內完成節點同步達到主網高度,時間成本大大降低。

2. 節省服務器資源

??快照啟動的節點,區塊日志 block.log 內只會保存節點啟動之后的區塊數據,占用的磁盤空間更小。對比全節點和快照方式啟動的節點兩種方式同步 EOS 主網的結果來看,可以得出的結論是使用快照啟動的節點在 CPU 和 RAM 的使用上都要遠遠小于全節點。這就意味著在一定程度上使用快照同步的節點能夠很大程度上的降低我們的服務器成本。

3. 不停機數據備份

傳統的區塊數據備份步驟:

停止同步中的節點

使用壓縮工具將區塊數據壓縮

重新啟動節點

快照備份步驟:

訪問對應的接口: /v1/producer/create_snapshot,節點開始數據備份,備份結束后繼續同步,無需停掉正在運行的節點。

通過上面的對比可以看出,使用快照方式啟動的節點,在數據備份上將更加簡單便捷。

快照實現的原理 1. 使用快照啟動

相應的源碼地址: https://github.com/EOSIO/eos/...,截取部分代碼:

auto infile = std::ifstream(my->snapshot_path->generic_string(), (std::ios::in | std::ios::binary));
auto reader = std::make_shared(infile);
reader->validate();
reader->read_section([this]( auto §ion ){
        section.read_row(my->chain_config->genesis);
        });
infile.close();

從源碼中可以看出當啟動添加參數:snapshot時,會以快照中的數據啟動。

2. 實現快照備份

進行快照備份時,服務器資源使用情況穩定。但正在備份中的節點服務將暫時不可用,待數據備份結束后將恢復。所以推薦備份節點和業務節點獨立開。
相應的源碼如下: https://github.com/EOSIO/eos/...

producer_plugin::snapshot_information producer_plugin::create_snapshot() const {
   chain::controller& chain = my->chain_plug->chain();

   auto reschedule = fc::make_scoped_exit([this](){
      my->schedule_production_loop();
   });

   if (chain.pending_block_state()) {
      // abort the pending block
      chain.abort_block();
   } else {
      reschedule.cancel();
   }

   auto head_id = chain.head_block_id();
   std::string snapshot_path = (my->_snapshots_dir / fc::format_string("snapshot-${id}.bin", fc::mutable_variant_object()("id", head_id))).generic_string();

   EOS_ASSERT( !fc::is_regular_file(snapshot_path), snapshot_exists_exception,
               "snapshot named ${name} already exists", ("name", snapshot_path));


   auto snap_out = std::ofstream(snapshot_path, (std::ios::out | std::ios::binary));
   auto writer = std::make_shared(snap_out);
   chain.write_snapshot(writer);
   writer->finalize();
   snap_out.flush();
   snap_out.close();

   return {head_id, snapshot_path};
}

從源碼中可以看出,當進行快照備份時,會將備份數據寫到我們設置的路徑下,快照的文件名為當前區塊的hash。

下面我們將詳細介紹在 FIBOS、EOS 上如何通過快照啟動
啟動 FIBOS 節點
注意: FIBOS 版本: v1.4.0+
創建快照 配置快照目錄

快照生成位置 config.data_dir 為根目錄,可以配置為:

config.data_dir = "./blockData/data"

fibos.load("producer", {
"snapshots-dir": "snapshots"
});

根據配置,快照生成的位置為:
./blockData/data/snapshots

載入插件
fibos.load("producer_api");?
注意: 開啟該插件后,請確保你的節點放置在內網安全。

完整配置文件可參考:

const fibos = require("fibos");
fibos.config_dir = "./blockData/data"
fibos.data_dir = "./blockData/data";

fibos.load("http", {
    "http-server-address": "0.0.0.0:8870",
    "access-control-allow-origin": "*",
    "http-validate-host": false,
    "verbose-http-errors": true
});

fibos.load("net", {
    "p2p-peer-address": [],
    "max-clients": 100,
    "p2p-listen-endpoint": "0.0.0.0:9876"
});

fibos.load("producer", {
    "snapshots-dir": "snapshots"
});

fibos.load("producer_api");

fibos.load("chain", {
    "contracts-console": true,
    "genesis-json": "genesis.json"
});

fibos.load("chain_api");

fibos.start();

相關 p2p 節點地址信息可以去 http://p2pcheck.fibospubg.top... 獲取。

生成快照

啟動節點后,通過調用接口:/v1/producer/create_snapshot 生成快照,命令如下:

curl http://127.0.0.1:8870/v1/producer/create_snapshot

節點生成完快照后,返回結果如下:

{
"head_block_id":"00003070049e51276829f6d1020fa638e5428fc9f8b0532fc60f680d72359dbe",
"snapshot_name":"./blockData/data/snapshots/snapshot-00003070049e51276829f6d1020fa638e5428fc9f8b0532fc60f680d72359dbe.bin"
}
通過快照啟動 配置快照文件路徑
fibos.load("chain", {
"snapshot": "./blockData/data/snapshots/snapshot-00003070049e51276829f6d1020fa638e5428fc9f8b0532fc60f680d72359dbe.bin"
});
啟動服務
fibos.start();
啟動 EOS 節點
注意: nodeos 版本: v1.4.0+
通過快照啟動 下載快照文件:

最新的快照文件地址:https://eosnode.tools/snapshots

wget $(wget --quiet "https://eosnode.tools/api/snapshots?limit=1" -O- | jq -r ".data[0].s3") -O snapshot.tar.gz

解壓快照文件

tar -xvzf snapshot.tar.gz
目錄結構:

├── node-data
│?? ├── snapshots
└── config.ini

注意:使用快照備份的方式啟動時,需要保證 node-data 文件夾下無日志和狀態數據文件。
配置文件:

vim config.ini

agent-name = EOSNODEOS

chain-state-db-size-mb = 10240
reversible-blocks-db-size-mb = 1024

http-server-address = 0.0.0.0:8870

http-validate-host = false
verbose-http-errors = true
abi-serializer-max-time-ms = 2000

access-control-allow-origin = *
allowed-connection = any

max-clients = 2
sync-fetch-span = 3000
connection-cleanup-period = 30
enable-stale-production = false

plugin = eosio::chain_api_plugin
plugin = eosio::chain_plugin

p2p-peer-address = ip:prot

相關 p2p 節點地址信息可以去 https://github.com/CryptoLion... 獲取

快照方式啟動腳本:
nodeos --config-dir ./ --data-dir ./node-data --snapshot ./node-data/snapshots/snapshot-023e5e8813f687c6c5ffcf6eae853eb24f78d90b475dac4fb94face8c8308e4f.bin

節點啟動后目錄結構:
├── node-data
│?? ├── snapshots
│ ├── blocks
│ ├── state
└── config.ini

驗證:
curl  http://127.0.0.1:8870/v1/chain/get_block -X POST -d "{"block_num_or_id":38006282}"

返回結果為高度38006282的區塊數據,返回的結果大致如下:

{
    "timestamp": "2019-01-18T02:43:16.500", 
    "producer": "atticlabeosb", 
    "confirmed": 0, 
    "previous": "0243ee09128b14b56f90b3a0288b4b6f34526f53d71f8dc4e56bb89a42b4a93d", 
    "transaction_mroot": "179c0382cf457b63356f733dc93bd3c582419f2b3a64e0d270e9d9238149bae4", 
    "action_mroot": "e83174a2fae3c44777616993e7ba65393805a382bf423b744010873f76beaae8", 
    "schedule_version": 667, 
    "new_producers": null, 
    "header_extensions": [ ], 
    "producer_signature": "SIG_K1_KhkTgB5PHXGmYtiZMGgHVcQKxKFh8uUFVA8Mwic8bpjA6bCFSYnNkbGqYZW23A5zBXWKvb3PnMJGEiS3MHwvPGpZzf95wd", 
    "transactions": [.....]
}
生成快照 添加插件

config.ini 中添加:

plugin = eosio::producer_api?_plugin
注意: 開啟該插件后,請確保你的節點放置在內網安全。
設置備份目錄

啟動時完整參數:

nodeos --config-dir ./ --data-dir ./node-data --snapshots??-dir ../snapshots-backups
創建快照
curl http://curl http://127.0.0.1:8870/v1/producer/create_sn?apshot

按照目前 EOS 的大小,這一步大約需要耗時10~15分鐘。快照創建結束后,在 snapshots-backups 目錄下,生成相應的快照文件。請求返回結果如下:

{
    "head_block_id":"000006a4529a21b72b58c70c262fd3a754930d68b30b0b166f72fc1dbbc376e8",
    "snapshot_name":"./snapshots-backups/snapshot-000006a4529a21b72b58c70c262fd3a754930d68b30b0b166f72fc1dbbc376e8.bin"
}
適用場景

搭建自己的 EOS、FIBOS API 節點

只關心當前最新的區塊數據、交易,無需溯源

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24540.html

相關文章

  • 使用快照啟動 FIBOSEOS 節點

    摘要:快照實現的原理使用快照啟動相應的源碼地址,截取部分代碼從源碼中可以看出當啟動添加參數時會以快照中的數據啟動。 為什么使用快照 1. 快速同步節點 EOS 的日志文件已經達到了 160G,同步一個 EOS 全節點大約需要耗時 10-15 天的時間,時間成本非常高。作為一個普通 Dapp 開發者,我們并不需要之前的區塊數據,所以完全不需要浪費大把時間去同步一個 EOS 全節點。通過快照同步...

    tinylcy 評論0 收藏0
  • FIBOS入坑指南——本地開發環境搭建

    摘要:如果出錯,需要查看一下本地節點是否正在運行,在瀏覽器輸入后記完至此,本地的開發環境基本搭建完成,如果你想試試在本地環境編寫部署調用智能合約,可以參考官方開發文檔,當然,后續有時間,我也會把在智能合約開發過程中踩到的坑寫寫。 FIBOS是什么? FIBOS 是一個結合 FIBJS 以及 EOS 的 JavaScript 的運行平臺,它使得 EOS 提供可編程性,并允許使用 JavaSc...

    goji 評論0 收藏0
  • 如何在 fibos 上創建快照使用快照啟動節點

    摘要:本文介紹下如何通過快照啟動節點。快照創建無需停止節點打包數據比備份數據更方便快捷。 本文介紹下如何通過快照啟動 FIBOS 節點。 快照創建無需停止節點打包數據比備份數據更方便快捷。如果還不清楚如何啟動一個 fibos 節點請參考 啟動 fibo節點 fibos 版本 v1.4.1+ 如何創建快照 1.配置快照目錄 快照生成位置 config.data_dir 為根目錄,可以配置 例1...

    Barry_Ng 評論0 收藏0
  • FIBOS 周報

    摘要:穩定幣的上線年月日,發布了穩定幣,并且成功通過了社區多簽。年月日,的穩定幣正式上線。年月日,六大個稅抵扣社會保險費由稅務部門統一征收等一批新規正式實施。本次的攻擊為針對項目方的重放攻擊。 FIBOS 穩定幣的上線 2018年12月21日,FIBOS 發布了穩定幣—— FOD,并且成功通過了社區多簽。 2018年12月28日, FIBOS 的穩定幣 FOD 正式上線。 早在2018年9月...

    explorer_ddf 評論0 收藏0
  • FIBOS 周報

    摘要:穩定幣的上線年月日,發布了穩定幣,并且成功通過了社區多簽。年月日,的穩定幣正式上線。年月日,六大個稅抵扣社會保險費由稅務部門統一征收等一批新規正式實施。本次的攻擊為針對項目方的重放攻擊。 FIBOS 穩定幣的上線 2018年12月21日,FIBOS 發布了穩定幣—— FOD,并且成功通過了社區多簽。 2018年12月28日, FIBOS 的穩定幣 FOD 正式上線。 早在2018年9月...

    dabai 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<