Hyperledger Fabric節點服務器對存儲空間的消耗仍是比較大的,在我實際生產體驗的過程當中,每一條請求數據大概僅2K左右,但實際佔用空間遠不止這點,每一個節點都會對Block及鏈進行保存維護,也會將數據解析存儲在本地,基本上1000萬條數據會佔用500G左右的空間。固然,這個僅供參考,不一樣的業務可能會略有差距。linux
我所負責的業務須要在聯盟鏈搭建初期就導入巨量的數據,這個需求本就有些違背區塊鏈的設計原則,已經把它當成一個數據庫來使用了,這樣龐大的業務量在實際處理過程當中也遇到不少的麻煩,最明顯的就是服務器性能的各類瓶頸,還要控制請求的次數和頻率。docker
通常狀況下,不會出現大批量導數的時候,節點服務器採用8C8G1T的配置足夠用好久了,我這邊由於業務緣由,服務器採用16C16G3T,內存是綽綽有餘,8G甚至4G也能知足沒問題,但CPU就明顯不足,這個官方也沒有給出一個建議配置,只能本身摸索。數據庫
在一些網絡博文中能夠找到一些官方資料的線索,好比Hyperledger Fabric 1.0的目標是支持1000TPS,且實驗室數據已經達到300~400TPS了。這些文章沒有明確究竟是節點服務器仍是排序服務器廣播的值,在實際操做中一臺16C16G的服務器徹底沒有達到文檔中所說的那樣,節點服務器大約在50~70之間,排序服務器廣播的在60~80之間,這多是本身沒徹底摸清楚Hyperledger Fabric性能優化這一塊。json
平常使用最低配置建議:vim
服務器類型 | 建議配置 | 備註 |
zookeeper | 4C+4G+500G | 磁盤有擴容需求 |
kafka | 4C+4G+500G | 磁盤有擴容需求 |
orderer | 8C+4G+500G | 磁盤有擴容需求 |
peer | 4C+4G+3T | 磁盤有擴容需求,如大批量數據導入,則cpu提早作好擴容 |
若是存在大批量數據導入的狀況,orderer和peer的配置建議均高於16C+16G,以避免數據導入過程當中容器down掉從而致使數據丟失的狀況發生。性能優化
接着說下Fabric容器的問題,由於區塊鏈的項目纔開始接觸容器的概念,在使用的時候對目錄存儲這塊有所瞭解。服務器
在將HyperLedger Fabric項目部署到生產以前,須要先將其存儲根目錄作下調整,以避免往後遇到存儲目錄磁盤充滿的狀況。網絡
HyperLedger Fabric使用的是Docker容器,默認的掛載路徑是/var/lib/docker,這個是掛載在磁盤第一目錄下,即若是不作修改,從此備份、搬遷及擴容等都是大問題。性能
這裏有兩個比較簡潔的解決方案:區塊鏈
一:服務器配置之初安裝docker時就指定其在額外掛載磁盤中。
這個意思很簡單,即新掛載磁盤到linux的data目錄下,docker容器就安裝到該目錄下,docker的卷宗文件也會在安裝時指定位置,如/data/docker/docker,經過docker info命令便可查看,即下圖所示:
二:經過修改docker配置文件來指定其卷宗文件存儲目錄。
這一步須要修改一個名爲daemon.json的文件內容,該文件位於/etc/docker/目錄下
具體步驟以下:
編輯或新建daemon文件
sudo vim /etc/docker/daemon.json
在該文件中指定docker的存儲根目錄
1 { 2 "graph": "/data/docker/docker" 3 }
執行docker從新加載當前配置信息
sudo systemctl daemon-reload
重啓docker服務
sudo systemctl restart docker.service
至此,咱們再次執行
docker info
來查看docker的存儲目錄位置,此時結果應該已經如第一種方法中的圖示同樣。
固然,該方法須要在部署生產以前就作好,切勿臨時變動。