中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

區塊鏈底層平臺FISCO BCOS的網絡壓縮功能是怎樣的

發布時間:2021-12-22 15:07:10 來源:億速云 閱讀:322 作者:柒染 欄目:互聯網科技

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

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

外網環境下,區塊鏈系統性能受限于網絡帶寬,為了盡量減少網絡帶寬對系統性能的影響,FISCO BCOS從relase-2.0.0-rc2開始支持網絡壓縮功能,該功能主要在發送端進行網絡數據包壓縮,在接收端將解包數據,并將解包后的數據傳遞給上層模塊。

下面講的就是FISCO BCOS的網絡壓縮功能,從FISCO BCOS的系統框架、核心實現、處理流程、測試結果等角度進行了解析。

Part 1、系統框架

網絡壓縮主要在P2P網絡層實現,系統框架如下:

區塊鏈底層平臺FISCO BCOS的網絡壓縮功能是怎樣的

網絡壓縮主要包括兩個過程:

  • 發送端壓縮數據包:群組層通過P2P層發送數據時,若數據包大小超過1KB,則壓縮數據包后,將其發送到目標節點;

  • 接收端解壓數據包:節點收到數據包后,首先判斷收到的數據包是否被壓縮,若數據包是壓縮后的數據包,則將其解壓后傳遞給指定群組,否則直接將數據傳遞給對應群組。

Part 2、核心實現

綜合考慮性能、壓縮效率等,我們選取了Snappy來實現數據包壓縮和解壓功能。

數據壓縮標記位

FISCO BCOS的網絡數據包結構如下圖:

區塊鏈底層平臺FISCO BCOS的網絡壓縮功能是怎樣的

網絡數據包主要包括包頭和數據兩部分,包頭占了16個字節,各個字段含義如下:

  • Length: 數據包長度

  • Version: 擴展位,用于擴展網絡模塊功能

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

  • PaketType: 標記了數據包類型

  • Seq: 數據包序列號

網絡壓縮模塊僅壓縮網絡數據,不壓縮數據包頭。

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

區塊鏈底層平臺FISCO BCOS的網絡壓縮功能是怎樣的

  • Version最高位為0,表明數據包對應的數據Data是未壓縮的數據;

  • Version最高位為1,表明數據包對應的數據Data是壓縮后的數據。

Part 3、處理流程

下面以群組1的一個節點向群組內其他節點發送網絡消息包packetA為例(比如發送交易、區塊、共識消息包等),詳細說明網絡壓縮模塊的關鍵處理流程。

發送端處理流程:

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

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

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

  • P2P將編碼后的數據包傳送到目的節點。

接收端處理流程:

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

  • 若網絡數據包被壓縮過,則調用解壓接口,對Data部分數據進行解壓,并根據數據包頭附帶的GID和PID,將解壓后的數據傳遞給指定群組的指定模塊;否則直接將數據包傳遞給上層模塊。

Part 4、配置與兼容

配置說明

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

  • 關閉壓縮:config.ini的[p2p].enable_compresss=false

兼容性說明

  • 數據兼容:不涉及存儲數據的變更;

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

Part 5、測試結果

為測試網絡壓縮效果,分別在內網和外網環境下,以同樣的壓測程序和QPS壓測開啟網絡壓縮和沒開啟網絡壓縮的四節點區塊鏈,測試結果如下。

通過測試結果可看出:

  • 內網環境下開啟壓縮對區塊鏈系統性能影響不大,運行串行solidity壓測合約時,網絡帶寬消耗降低為未開壓縮時的三分之二;運行并行precompile壓測合約,網絡帶寬消耗降低到未開壓縮時的三分之一

  • 外網環境下:開啟壓縮可提升區塊鏈系統性能

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

區塊鏈底層平臺FISCO BCOS的網絡壓縮功能是怎樣的

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

圖二:TPS對比(內網和外網環境下,關閉壓縮和開啟壓縮情況下TPS)

區塊鏈底層平臺FISCO BCOS的網絡壓縮功能是怎樣的

通過圖二可看出,內網環境下,開啟壓縮對區塊鏈系統性能影響不大;外網環境下,因為在有限帶寬限制下,開啟 壓縮可處理更多交易,區塊鏈性能提升了約三分之一。

內網環境測試結果
串行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
外網環境測試結果
壓測場景壓縮前Snappy壓縮后
四節點,串行solidity合約(PerformanceOk)1125.81740
四節點, 串行solidity合約(PerformanceOkD)低于10001407

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

向AI問一下細節

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

AI

长岛县| 昭苏县| 宜阳县| 潼关县| 于田县| 乳源| 阿拉善盟| 平乐县| 万源市| 武定县| 渭南市| 甘孜县| 沾益县| 万州区| 青浦区| 大安市| 丹阳市| 霍城县| 嘉兴市| 肇源县| 广南县| 乌兰察布市| 新闻| 博爱县| 白沙| 朔州市| 南陵县| 宝山区| 桐庐县| 东源县| 昌江| 永善县| 冕宁县| 九江市| 阳春市| 大英县| 印江| 喀喇| 阿坝| 宁明县| 阿拉善盟|