<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          數(shù)據(jù)倉庫組件Data-Stash:助力區(qū)塊鏈節(jié)點“輕裝上陣”

          共 4937字,需瀏覽 10分鐘

           ·

          2021-01-11 07:18


          當(dāng)下,數(shù)據(jù)在全球經(jīng)濟(jì)運轉(zhuǎn)中的價值日益凸顯,與傳統(tǒng)的土地、勞動力、資本、技術(shù)等并列,成為重要生產(chǎn)要素。


          數(shù)據(jù)最終的價值來源于治理。只有經(jīng)過采集、清洗、分析和處理后的數(shù)據(jù),才能在流通中更順暢地使用,其價值才能得到更充分地挖掘。同時,隨著區(qū)塊鏈技術(shù)的蓬勃發(fā)展,區(qū)塊鏈漸趨規(guī)模化應(yīng)用,鏈上數(shù)據(jù)總量呈指數(shù)級增長,其中蘊(yùn)藏的巨大價值,也需要通過高效、規(guī)范的數(shù)據(jù)治理,才能得到充分彰顯。


          在區(qū)塊鏈數(shù)據(jù)治理方面,微眾銀行區(qū)塊鏈基于多年技術(shù)研究和應(yīng)用實踐經(jīng)驗,研發(fā)了一套數(shù)據(jù)治理通用組件(WeBankBlockchain-Data),多維提升開發(fā)、運營、運維效率,實現(xiàn)數(shù)據(jù)從要素到資源的轉(zhuǎn)化。


          目前,該套組件由數(shù)據(jù)倉庫組件(Data-Stash)數(shù)據(jù)導(dǎo)出組件(Data-Export)數(shù)據(jù)對賬組件(Data-Reconcile)三個相互獨立、可插拔、可靈活組裝的子組件構(gòu)成,所有代碼和文檔均于2020年12月正式對外開源。詳情可參考開源公告


          三個子組件面向不同角色解決相應(yīng)的數(shù)據(jù)治理需求,業(yè)務(wù)、運營、開發(fā)、運維等不同角色,如何快速上手使用?我們將通過系列文章,抽絲剝繭解析每一個子組件的關(guān)鍵特性和使用方式。本文介紹數(shù)據(jù)倉庫組件Data-Stash,歡迎大家積極體驗并將使用訴求或優(yōu)化建議反饋給我們。


          ??認(rèn)識Data-Stash


          隨著區(qū)塊鏈業(yè)務(wù)不斷運行,累積的海量鏈上數(shù)據(jù)會對區(qū)塊鏈節(jié)點乃至網(wǎng)絡(luò)的運維帶來挑戰(zhàn)。


          從磁盤容量來看,由于節(jié)點容量有限,持續(xù)膨脹的數(shù)據(jù)要求磁盤不斷擴(kuò)容。從交易性能來看,過多的數(shù)據(jù)會帶來交易執(zhí)行性能的衰減。從節(jié)點同步來看,大量的數(shù)據(jù)同步會引出網(wǎng)絡(luò)帶寬被侵占、同步速度緩慢等問題。
          數(shù)據(jù)倉庫組件Data-Stash為上述難題提供解決方案,通過為節(jié)點在外部生成全量數(shù)據(jù)備份,實現(xiàn)海量數(shù)據(jù)高效治理。
          具體而言,節(jié)點通過數(shù)據(jù)裁剪實現(xiàn)冷熱數(shù)據(jù)分離,鏈上僅保留熱數(shù)據(jù),冷數(shù)據(jù)則通過全量備份獲取,以此節(jié)省節(jié)點空間。冷熱數(shù)據(jù)分離后,交易的驗證、執(zhí)行僅依賴于鏈上熱數(shù)據(jù),從而提升交易執(zhí)行性能。
          對于新節(jié)點加入網(wǎng)絡(luò)后數(shù)據(jù)的同步,只需要從全量備份拉取數(shù)據(jù),實現(xiàn)數(shù)據(jù)高效同步,其間不占用區(qū)塊鏈網(wǎng)絡(luò)帶寬,免去冗長的同步過程,減少節(jié)點數(shù)據(jù)同步的等待時間,使得節(jié)點可以快速加入?yún)^(qū)塊鏈網(wǎng)絡(luò)并正常工作。
          目前該組件支持區(qū)塊鏈底層平臺FISCO BCOS v2.7.1及以上版本。
          ??Data-Stash關(guān)鍵特性一覽
          作為一個數(shù)據(jù)治理工具,Data-Stash可為區(qū)塊鏈底層平臺提供節(jié)點數(shù)據(jù)擴(kuò)容、備份、裁剪和高效同步的能力,具有斷點續(xù)傳、可信驗證、易于使用等優(yōu)點。用戶可基于Binlog協(xié)議同步區(qū)塊鏈底層節(jié)點全量數(shù)據(jù),進(jìn)而實現(xiàn)全量數(shù)據(jù)備份、冷熱數(shù)據(jù)分離、節(jié)點快速同步,適合節(jié)點有海量數(shù)據(jù)等運維場景。
          1)節(jié)點賬本全量備份
          Data-Stash通過解析節(jié)點生成的Binlog,可以在節(jié)點外生成鏈上數(shù)據(jù)的全量備份。隨后,節(jié)點運維人員可對鏈上數(shù)據(jù)進(jìn)行裁剪,達(dá)到節(jié)省空間、提升性能的效果。對于裁剪后缺失的冷數(shù)據(jù),節(jié)點會通過amdb從全量備份讀取。節(jié)點還可以通過fisco-sync工具,將數(shù)據(jù)重新導(dǎo)回到節(jié)點,恢復(fù)完整的節(jié)點,而不必從區(qū)塊鏈網(wǎng)絡(luò)拉取數(shù)據(jù)。
          f6d38aeacba970169b98c64af973b3f1.webp
          2)多維度賬本校驗
          數(shù)據(jù)倉庫組件在讀取某節(jié)點日志后,會進(jìn)行多重校驗,以防出現(xiàn)節(jié)點賬本信息被損害、被篡改、共識系統(tǒng)異常等情況。
          校驗是多維度的,整體可分為對比校驗和區(qū)塊鏈校驗。對比校驗是指Data-Stash會拉取多個節(jié)點的賬本進(jìn)行對比,確認(rèn)賬本內(nèi)容一致后才可以入庫;區(qū)塊鏈校驗是指驗證區(qū)塊鏈本身,包括哈希檢查、簽名檢查、狀態(tài)根檢查等。
          8d52ee664e76fc755938ff2c9d5a593d.webp
          3)備份數(shù)據(jù)可信存儲
          Data-Stash每處理完一個區(qū)塊,都會為此時的全量備份生成一個哈希值作為檢查點。該檢查點會為存儲增信,適用于全量備份庫之間的校驗等場景。
          例如,不同機(jī)構(gòu)生成了各自的全量備份,現(xiàn)在想比對各自備份數(shù)據(jù)是否一致,各機(jī)構(gòu)只需要提取出最新區(qū)塊高度的檢查點進(jìn)行比對,如一致,則表示備份內(nèi)容完全相同。
          4)斷點續(xù)傳
          在實際運行中,F(xiàn)ISCO BCOS會生成許多Binlog,這些Binlog無論是體積、數(shù)目,都具有相當(dāng)規(guī)模,如果每一次運行都重復(fù)下載、解析,會造成性能浪費。為此,我們設(shè)計了斷點續(xù)傳機(jī)制,組件會持續(xù)記錄解析的進(jìn)度,每次運行時都會從上一次斷點處運行,而不會重新開始。
          5)易于使用
          Data-Stash以jar包的形式提供服務(wù),用戶可通過jar包或bash腳本運行。開發(fā)者只需要做最少化配置,默認(rèn)情況下,只需要配置nginx地址、全量數(shù)據(jù)庫地址,程序即可運行。
          此外,Data-Stash還允許用戶進(jìn)行更高級的配置設(shè)置,例如修改批插入次數(shù)、輪詢間隔等。
          ??Data-Stash如何進(jìn)行數(shù)據(jù)治理?
          Data-Stash是助力海量數(shù)據(jù)治理的第一環(huán),通過生成節(jié)點全量備份,以滿足冷熱分離、高效同步、監(jiān)管審計等需求。
          1)實現(xiàn)冷熱數(shù)據(jù)分離
          隨著時間推移,節(jié)點會積累越來越多的賬本數(shù)據(jù),如果節(jié)點體積不受控制的增長,最終會將節(jié)點服務(wù)器侵蝕殆盡,造成不良影響。對此,開發(fā)者可以使用數(shù)據(jù)倉庫服務(wù)來實現(xiàn)冷熱數(shù)據(jù)分離。
          • 確保節(jié)點已經(jīng)開啟Binlog,如果節(jié)點未開啟Binlog并已在運行,可先停止節(jié)點,刪除群組數(shù)據(jù)、開啟Binlog后再重啟節(jié)點,節(jié)點即可重新同步并生成Binlog。
          • 準(zhǔn)備好一個第三方數(shù)據(jù)庫,啟動Data-Stash服務(wù),將節(jié)點Binlog持續(xù)導(dǎo)入到該數(shù)據(jù)庫中,實現(xiàn)全量備份。
          • 開發(fā)者可對鏈上數(shù)據(jù)做一定劃分,可將節(jié)點上不常用數(shù)據(jù)刪除,特別是對于存證這樣關(guān)聯(lián)性較弱的業(yè)務(wù),保留近期數(shù)據(jù)即可。
          • 為了讓節(jié)點運行不受影響,用戶需要保證啟用amdb,這樣缺失的冷數(shù)據(jù)會自動從數(shù)據(jù)倉庫讀取,完成節(jié)點瘦身。

            啟用amdb請參考

            https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/data_governance.html#amdb-proxy


          2)實現(xiàn)節(jié)點高效同步
          在區(qū)塊鏈業(yè)務(wù)運行時,經(jīng)常有節(jié)點同步或升級的需求。例如,服務(wù)器因為某些故障需要被下線回收,或者需要更換磁盤,此時需要對服務(wù)器或磁盤數(shù)據(jù)進(jìn)行同步,重新運行節(jié)點需要從區(qū)塊鏈網(wǎng)絡(luò)里同步數(shù)據(jù),若待同步數(shù)據(jù)很大,例如幾十G、幾百G,就會使得數(shù)據(jù)恢復(fù)時間冗長,而且還會占滿區(qū)塊鏈的網(wǎng)絡(luò)帶寬,使得整個系統(tǒng)長時間停滯。

          開發(fā)者可通過Data-Stash實現(xiàn)節(jié)點同步:

          • 開發(fā)者需要通過Data-Stash生成全量數(shù)據(jù)備份。
          • 當(dāng)需要節(jié)點同步時,開發(fā)者可以通過FISCO BCOS項目下的fisco sync數(shù)據(jù)同步工具,將數(shù)據(jù)倉庫導(dǎo)回到節(jié)點。這一過程不依賴于任何其他節(jié)點,所以同步不會占用區(qū)塊鏈的網(wǎng)絡(luò)資源。

            fisco sync數(shù)據(jù)同步工具參考鏈接:

            https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/data_governance.html#fisco-sync


          3)監(jiān)管、審計、追溯
          對于監(jiān)管方而言,要求賬本數(shù)據(jù)完整、可查詢,但區(qū)塊鏈自身的賬本數(shù)據(jù)庫不一定滿足該需求。例如出于節(jié)點瘦身、數(shù)據(jù)分片等需求,節(jié)點上可能僅存儲部分賬本數(shù)據(jù);出于寫性能的需要,區(qū)塊鏈會選擇rocksdb等數(shù)據(jù)庫,但這類數(shù)據(jù)庫在讀性能上不具備優(yōu)勢。
          此時,監(jiān)管方可以對某個節(jié)點運行數(shù)據(jù)倉庫服務(wù)導(dǎo)出完整的全量備份,由于關(guān)系型數(shù)據(jù)庫的采用,查詢也十分便捷。同時,在全量備份過程中,我們采用的多維度校驗機(jī)制具有易于驗證的優(yōu)勢,可防止節(jié)點運維惡意修改賬本信息欺騙監(jiān)管方,更好地滿足監(jiān)管需求。
          ??Data-Stash整體架構(gòu)
          FISCO BCOS節(jié)點在共識過程中持續(xù)獲取新的區(qū)塊,并更新自己的賬本狀態(tài),此外還會生成Binlog日志,以記錄該區(qū)塊對應(yīng)的狀態(tài)變動,外界可以通過nginx訪問到這些Binlog日志。
          與此同時,Data-Stash會不斷輪詢nginx以下載最新的Binlog日志到本地,并進(jìn)行解析,解析出區(qū)塊變動信息后會進(jìn)行校驗,防止錯誤的Binlog被導(dǎo)入。校驗通過后,區(qū)塊變動數(shù)據(jù)會存儲到指定的持久化系統(tǒng)中,這樣該系統(tǒng)就成為了節(jié)點賬本的全量備份。
          Data-Stash還會為每一個區(qū)塊生成對應(yīng)的檢查點,為全量備份增信。本地被處理完的Binlog也會被清理掉。
          Data-Stash的整體運行模式如下:
          17c3863ff88702f674e3b02a4d37d004.webp
          其中,節(jié)點服務(wù)器需要用戶手動配置,配置好后即可調(diào)用Data-Stash進(jìn)行解析。
          節(jié)點服務(wù)器
          節(jié)點服務(wù)器相關(guān)的組件包括:
          1)FISCO BCOS節(jié)點
          FISCO BCOS節(jié)點的賬本按照mysql存儲,每新增加一個區(qū)塊,都會為mysql里添加一些數(shù)據(jù),mysql表的變化會被記錄到Binlog中,Binlog目錄被放在data/groupX/BinaryLogs目錄下,x表示群組號:
          03a2b18d1ed09d9199baa33ef0d33a8c.webp
          2)Nginx
          FISCO BCOS節(jié)點本身并不會暴露Binlog,如果希望外界讀取到Binlog,需要借助nginx。通過在nginx中配置端口和Binlog目錄的映射,外界就可以通過該端口訪問到Binlogs。
          認(rèn)識Binlog:Binlog記錄賬本的變化。在FISCO BCOS中,每得到一個新的區(qū)塊后,該區(qū)塊都會被存儲到賬本中,同時Binlog會記錄賬本的變動,并按區(qū)塊來進(jìn)行組織。每個Binlog日志會包含多個區(qū)塊對應(yīng)的變化,Binlog會以記錄的第一個區(qū)塊高度作為文件名,例如3.binlog表示該文件中的區(qū)塊以3作為起始。
          下圖是Binlog的結(jié)構(gòu):
          ee5a212e4c68a1c7b100d265cda1ff43.webp
          數(shù)據(jù)倉庫組件
          數(shù)據(jù)倉庫組件由如下幾個部分構(gòu)成:

          1)下載服務(wù)Fetcher Server

          下載服務(wù)會持續(xù)輪詢nginx端口,下載最新Binlog日志到本地目錄中。

          2)解析服務(wù)Binlog Parser

          解析服務(wù)持續(xù)讀取Binlog日志,并對Binlog中的區(qū)塊信息進(jìn)行解析。

          3)校驗服務(wù)Binlog verifier

          校驗服務(wù)用于保證數(shù)據(jù)的可信性。校驗服務(wù)會從其他節(jié)點拉取Binlog進(jìn)行對比,保證內(nèi)容的一致性,并對數(shù)據(jù)本身進(jìn)行校驗,例如對于區(qū)塊哈希校驗、區(qū)塊簽名校驗、交易根校驗等。

          4)存儲服務(wù)Data Storage

          存儲服務(wù)按照Binlog的變動,會將其內(nèi)容應(yīng)用到數(shù)據(jù)庫中,該數(shù)據(jù)庫會包含系統(tǒng)表、合約表等,結(jié)構(gòu)上與節(jié)點保持一致,數(shù)據(jù)量上則包含節(jié)點運行至今的所有區(qū)塊鏈數(shù)據(jù)。表結(jié)構(gòu)可分為如下幾類:
          類型表前綴說明
          系統(tǒng)表_sys_包含區(qū)塊鏈信息,例如區(qū)塊數(shù)據(jù)(_sys_hash_2_block_)、共識狀態(tài)(_sys_consensus_)、cns(_sys_cns_)等
          合約表c_或cp_記錄合約信息,包括nonce值、合約代碼、代碼哈希等
          用戶表_u_調(diào)用CRUD合約創(chuàng)建的表

          5)檢查點服務(wù)Checkpoint Handler每一個區(qū)塊數(shù)據(jù)的入庫存儲,都會生成一個檢查點數(shù)據(jù),該檢查點包含了前置所有區(qū)塊數(shù)據(jù)的哈希,用于額外對存儲進(jìn)行增信。
          ??即刻使用
          上述功能所涉及的最新代碼和技術(shù)文檔已同步更新,歡迎體驗和 star 支持。如需咨詢技術(shù)問題,歡迎關(guān)注本公眾號,對話框回復(fù)【小助手】進(jìn)技術(shù)交流群。
          Data-Stash github代碼庫地址碼倉庫:

          https://github.com/WeBankBlockchain/Data-Stash

          Data-Stash gitee代碼庫地址:https://gitee.com/WeBankBlockchain/Data-StashData-Stash 技術(shù)文檔:https://data-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Data-Stash/index.html
          首次體驗Data-Stash,可參考快速部署文檔:https://data-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Data-Stash/quickstart.html
          向我們報告問題,歡迎提交issue:https://github.com/WeBankBlockchain/Data-Stash/issues

          3004c610a6c8f8c12c08a6f8febd6137.webp
          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品无码专区AV在线播放 | 日韩AV之家 | 操逼美女国产 | 国产精品永久久久久久久WWW | 99视频在线免费观看视频 |