基于区块链的健康链系统设计与实现(2)区块链平台Web服务器
2.2 區塊鏈平臺分析
Bitcoin(比特幣)作為區塊鏈技術的起源,是目前發展最成熟的開源區塊鏈平臺之一,擁有大量的開發人員和活躍的開發社區。Ethereum(以太坊)核心是支持智能合約的EVM(以太坊虛擬機),提供了大量方便接口便于開發者進行深度應用開發。 Hyperledger Fabric(超級賬本)使用諸如單節點共識、分布式隊列共識等共識方式,并支持智能合約和外部組件擴展。但Ethereum和Fabric部署困難相對困難。EOS區塊鏈采用DPOS共識機制,生成區塊速度快、延遲低,能支持數百萬級別用戶。但EOS作為新興的區塊鏈平臺發展還不成熟,同時開發社區及開發人員相對較少,進行開發研究較為困難。[4]
比特幣作為一種以交易為模型的數字貨幣系統,其交易的數據結構如圖2。交易由交易輸入和交易輸出組成,交易輸入和交易輸出可以有多個,表示一次交易可以將先前多個賬戶中的比特幣合并后轉給另外多個, 每個輸入主要由上筆交易的哈希PrevTxHash、上筆交易的輸出索引Index和輸入腳本ScriptSig組成,其中ScriptSig是持有者對當前交易的簽名。通過對某個交易的輸入可構成多條以交易為結點的鏈表,并一直向前追溯至源頭的Coinbase交易(即挖礦所得的比特幣)。如果一筆交易的輸出沒有任何另一筆交易的輸入與之對應,則說明該輸出中的比特幣未被花費。[5]
區塊是區塊鏈的一個數據單元,它由區塊頭和區塊體組成。比特幣的區塊數據架構如圖3,區塊體包含所有的交易內容,區塊頭包含版本號、時間戳、隨機值和難度值等基本信息,并包含上一個區塊的哈希值和交易的默克爾樹根哈希值。區塊的哈希值通過對區塊頭進行兩次SHA256哈希運算得到。通過指向上一個區塊的哈希值所有的區塊構成一個鏈條,同時,區塊的哈希值和對區塊內的所有交易計算得到的默克爾樹根哈希值都可以保證數據的不可篡改和完整。[6]
2.3 Web服務器分析
Nginx是一個跨平臺的Web服務器, 相比Apache、Tomcat和Jetty,它具備高擴展、熱部署、單機支持10萬以上的并發連接、低內存消耗和高可靠的特性。
Nginx提供了異步的、非阻塞的Web服務,它的系統架構如圖4,它主要由一個Master主進程、多個Worker工作進程、一個可選的Cachemanager緩存索引管理進程以及一個可選的Cacheloader緩存索引進程組成。
Master主進程用來啟動和管理Worker工作進程,使用管道機制與工作進程通信,并且通過信號機制與外界通信來實現重啟、退出、停止等系統服務。Worker進程是提供Web服務的主體,它收到Web請求通過代理轉發給后端服務器,由后端服務器進行數據處理和頁面組織后返回數據。其中FastCGI是一個可伸縮地、高速地在Nginx服務器和動態腳本語言間通信的應用層通信協議,PHP作為一種服務端、完全跨平臺的HTML嵌入式的腳本語言,它的PHP-FPM模塊實現了FastCGI協議并負責處理PHP動態請求,從而分擔了Nginx前端的壓力,使Nginx專注處理靜態請求。[7]
Cachemanager進程和Cacheloader進程主要是將歷史應答數據進行本地緩存,從而提高請求的響應效率,降低網絡壓力。Cacheloader進程在Nginx服務啟動一段之后(默認是1分鐘)由主進程生成,在緩存元數據重建完成后就自動退出。Cachemanager進程存在于主進程的整個生命期,負責管理緩存索引,支持工作進程對緩存數據的快速查詢。
多個Worker進程之間是對等的,它們同等競爭來自客戶端的請求,通過互斥鎖機制保證最終由一個Worker進程進行處理,從而做到資源的負載均衡。[8]
【參考】
[1] 雷志偉 等 基于區塊鏈的健康鏈系統設計與實現. 《計算機與數字工程》2020年第12期
總結
以上是生活随笔為你收集整理的基于区块链的健康链系统设计与实现(2)区块链平台Web服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于区块链的健康链系统设计与实现(1)引
- 下一篇: java信息管理系统总结_java实现科