溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

區(qū)塊鏈底層平臺FISCO BCOS的網(wǎng)絡(luò)壓縮功能是怎樣的

發(fā)布時間:2021-12-22 15:07:10 來源:億速云 閱讀:321 作者:柒染 欄目:互聯(lián)網(wǎng)科技

區(qū)塊鏈底層平臺FISCO BCOS的網(wǎng)絡(luò)壓縮功能是怎樣的,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

FISCO BCOS是完全開源的聯(lián)盟區(qū)塊鏈底層技術(shù)平臺,由金融區(qū)塊鏈合作聯(lián)盟(深圳)(簡稱金鏈盟)成立開源工作組通力打造。開源工作組成員包括博彥科技、華為、深證通、神州數(shù)碼、四方精創(chuàng)、騰訊、微眾銀行、亦筆科技和越秀金科等金鏈盟成員機構(gòu)。

外網(wǎng)環(huán)境下,區(qū)塊鏈系統(tǒng)性能受限于網(wǎng)絡(luò)帶寬,為了盡量減少網(wǎng)絡(luò)帶寬對系統(tǒng)性能的影響,F(xiàn)ISCO BCOS從relase-2.0.0-rc2開始支持網(wǎng)絡(luò)壓縮功能,該功能主要在發(fā)送端進行網(wǎng)絡(luò)數(shù)據(jù)包壓縮,在接收端將解包數(shù)據(jù),并將解包后的數(shù)據(jù)傳遞給上層模塊。

下面講的就是FISCO BCOS的網(wǎng)絡(luò)壓縮功能,從FISCO BCOS的系統(tǒng)框架、核心實現(xiàn)、處理流程、測試結(jié)果等角度進行了解析。

Part 1、系統(tǒng)框架

網(wǎng)絡(luò)壓縮主要在P2P網(wǎng)絡(luò)層實現(xiàn),系統(tǒng)框架如下:

區(qū)塊鏈底層平臺FISCO BCOS的網(wǎng)絡(luò)壓縮功能是怎樣的

網(wǎng)絡(luò)壓縮主要包括兩個過程:

  • 發(fā)送端壓縮數(shù)據(jù)包:群組層通過P2P層發(fā)送數(shù)據(jù)時,若數(shù)據(jù)包大小超過1KB,則壓縮數(shù)據(jù)包后,將其發(fā)送到目標節(jié)點;

  • 接收端解壓數(shù)據(jù)包:節(jié)點收到數(shù)據(jù)包后,首先判斷收到的數(shù)據(jù)包是否被壓縮,若數(shù)據(jù)包是壓縮后的數(shù)據(jù)包,則將其解壓后傳遞給指定群組,否則直接將數(shù)據(jù)傳遞給對應(yīng)群組。

Part 2、核心實現(xiàn)

綜合考慮性能、壓縮效率等,我們選取了Snappy來實現(xiàn)數(shù)據(jù)包壓縮和解壓功能。

數(shù)據(jù)壓縮標記位

FISCO BCOS的網(wǎng)絡(luò)數(shù)據(jù)包結(jié)構(gòu)如下圖:

區(qū)塊鏈底層平臺FISCO BCOS的網(wǎng)絡(luò)壓縮功能是怎樣的

網(wǎng)絡(luò)數(shù)據(jù)包主要包括包頭和數(shù)據(jù)兩部分,包頭占了16個字節(jié),各個字段含義如下:

  • Length: 數(shù)據(jù)包長度

  • Version: 擴展位,用于擴展網(wǎng)絡(luò)模塊功能

  • ProtocolID: 存儲了數(shù)據(jù)包目的群組ID和模塊ID,用于多群組數(shù)據(jù)包路由,目前最多支持32767個群組

  • PaketType: 標記了數(shù)據(jù)包類型

  • Seq: 數(shù)據(jù)包序列號

網(wǎng)絡(luò)壓縮模塊僅壓縮網(wǎng)絡(luò)數(shù)據(jù),不壓縮數(shù)據(jù)包頭。

考慮到壓縮、解壓小數(shù)據(jù)包無法節(jié)省數(shù)據(jù)空間,而且浪費性能,在數(shù)據(jù)壓縮過程中,不壓縮過小的數(shù)據(jù)包,僅壓縮數(shù)據(jù)包大于c_compressThreshold的數(shù)據(jù)包.c_compressThreshold默認是1024(1KB)。我們擴展了Version的最高位,作為數(shù)據(jù)包壓縮標志:

區(qū)塊鏈底層平臺FISCO BCOS的網(wǎng)絡(luò)壓縮功能是怎樣的

  • Version最高位為0,表明數(shù)據(jù)包對應(yīng)的數(shù)據(jù)Data是未壓縮的數(shù)據(jù);

  • Version最高位為1,表明數(shù)據(jù)包對應(yīng)的數(shù)據(jù)Data是壓縮后的數(shù)據(jù)。

Part 3、處理流程

下面以群組1的一個節(jié)點向群組內(nèi)其他節(jié)點發(fā)送網(wǎng)絡(luò)消息包packetA為例(比如發(fā)送交易、區(qū)塊、共識消息包等),詳細說明網(wǎng)絡(luò)壓縮模塊的關(guān)鍵處理流程。

發(fā)送端處理流程:

  • 群組1的群組模塊將packetA傳入到P2P層;

  • P2P判斷packetA的數(shù)據(jù)包大于c_compressThreshold,則調(diào)用壓縮接口,對packetA進行壓縮,否則直接將packetA傳遞給編碼模塊;

  • 編碼模塊給packetA加上包頭,附帶上數(shù)據(jù)壓縮信息,即:若packetA是壓縮后的數(shù)據(jù)包,將包頭Version的最高位置為1,否則置為0;

  • P2P將編碼后的數(shù)據(jù)包傳送到目的節(jié)點。

接收端處理流程:

  • 目標機器收到數(shù)據(jù)包后,解碼模塊分離出包頭,通過包頭Version字段的最高位是否為1,判斷網(wǎng)絡(luò)數(shù)據(jù)是否被壓縮;

  • 若網(wǎng)絡(luò)數(shù)據(jù)包被壓縮過,則調(diào)用解壓接口,對Data部分數(shù)據(jù)進行解壓,并根據(jù)數(shù)據(jù)包頭附帶的GID和PID,將解壓后的數(shù)據(jù)傳遞給指定群組的指定模塊;否則直接將數(shù)據(jù)包傳遞給上層模塊。

Part 4、配置與兼容

配置說明

  • 開啟壓縮:2.0.0-rc2及其以上版本 支持網(wǎng)絡(luò)壓縮功能,配置 config.ini的[p2p].enable_compresss=true

  • 關(guān)閉壓縮:config.ini的[p2p].enable_compresss=false

兼容性說明

  • 數(shù)據(jù)兼容:不涉及存儲數(shù)據(jù)的變更;

  • 網(wǎng)絡(luò)兼容rc1:向前兼容,目前僅release-2.0.0-rc2及其以上版本有網(wǎng)絡(luò)壓縮功能。

Part 5、測試結(jié)果

為測試網(wǎng)絡(luò)壓縮效果,分別在內(nèi)網(wǎng)和外網(wǎng)環(huán)境下,以同樣的壓測程序和QPS壓測開啟網(wǎng)絡(luò)壓縮和沒開啟網(wǎng)絡(luò)壓縮的四節(jié)點區(qū)塊鏈,測試結(jié)果如下。

通過測試結(jié)果可看出:

  • 內(nèi)網(wǎng)環(huán)境下開啟壓縮對區(qū)塊鏈系統(tǒng)性能影響不大,運行串行solidity壓測合約時,網(wǎng)絡(luò)帶寬消耗降低為未開壓縮時的三分之二;運行并行precompile壓測合約,網(wǎng)絡(luò)帶寬消耗降低到未開壓縮時的三分之一;

  • 外網(wǎng)環(huán)境下:開啟壓縮可提升區(qū)塊鏈系統(tǒng)性能

圖一:帶寬對比(關(guān)閉壓縮和開啟壓縮情況下,壓測并行solidity合約和串行Precompile合約)

區(qū)塊鏈底層平臺FISCO BCOS的網(wǎng)絡(luò)壓縮功能是怎樣的

通過圖一可看出,執(zhí)行串行solidity合約,開啟壓縮可節(jié)省三分之一帶寬;執(zhí)行并行Precompile合約可節(jié)省三分 之二帶寬。 

圖二:TPS對比(內(nèi)網(wǎng)和外網(wǎng)環(huán)境下,關(guān)閉壓縮和開啟壓縮情況下TPS)

區(qū)塊鏈底層平臺FISCO BCOS的網(wǎng)絡(luò)壓縮功能是怎樣的

通過圖二可看出,內(nèi)網(wǎng)環(huán)境下,開啟壓縮對區(qū)塊鏈系統(tǒng)性能影響不大;外網(wǎng)環(huán)境下,因為在有限帶寬限制下,開啟 壓縮可處理更多交易,區(qū)塊鏈性能提升了約三分之一。

內(nèi)網(wǎng)環(huán)境測試結(jié)果
串行solidity合約(PerformanceOk)壓縮前Snappy壓縮后
TPS1961.51939.4
入帶寬10.88MBit/s6.93MBit/s
出帶寬9.08MBit/s5.70MBit/s
并行Precompile合約(PerformanceDT)壓縮前Snappy壓縮后
TPS97259741
入帶寬76.06MBit/s22.72MBit/s
出帶寬80.48MBit/s24.17MBit/s
外網(wǎng)環(huán)境測試結(jié)果
壓測場景壓縮前Snappy壓縮后
四節(jié)點,串行solidity合約(PerformanceOk)1125.81740
四節(jié)點, 串行solidity合約(PerformanceOkD)低于10001407

關(guān)于區(qū)塊鏈底層平臺FISCO BCOS的網(wǎng)絡(luò)壓縮功能是怎樣的問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI