分片技術簡介與Trias分片MVP

2021-08-26 23:13:47 字數 2109 閱讀 3000

區塊鏈發展的關鍵因素有兩個,乙個是資料的隱私和確權,乙個就是區塊鏈的擴容,即區塊鏈效能的提公升。區塊鏈資料的隱私和確權我們前面的文章已經提到過,今天我們主要討論的是區塊鏈的擴容方法。

區塊鏈為什麼要擴容?我們先來看看位元幣和以太坊的吞吐量,位元幣是7tps左右,以太坊是20tps左右,但是中心化的visa的tps大概在8000左右。所以如果乙個支付系統放在區塊鏈上,區塊鏈的效能將遠遠不能滿足支付系統的吞吐量要求,這就像乙個高速公路收費站,我們只開了乙個收費口,而且這個收費口的工作效率也很低,那麼就會有大量的汽車被堵在收費口外,這會造成高速公路也就是網路的擁堵,一筆交易可能要等幾天才能完成。但是如果我們開了10個收費口甚至更多,那交通狀況將大大得到緩解直到暢通無阻。如果乙個收費口可以比喻為乙個分鏈的話,設定「多個」或「多種」收費口的技術來使區塊鏈的吞吐量增加的技術就是分片技術。

分片技術最早源自資料庫的擴容技術,是一種基於資料庫分成若干片段的傳統概念擴容技術,它將資料庫分割成多個碎片並將這些碎片放置在不同的伺服器上,在這些不同伺服器上的資料就能同時並行處理,在同樣的時間環境下,處理速度成倍增加。這種分片技術應用於區塊鏈上就是將網路中的節點分成不同的分片,也可以說分在不同的分鏈上,各分片可以並行處理不同交易,以提高網路併發量,也就是我們常說的tps。區塊鏈分片的特點是具有動態擴容性,隨著節點數量的增加,區塊鏈的效能也隨之增加。將網路分割為碎片會使得更多的交易同時被處理和驗證。但是它僅僅可以並行處理相互之間未建立連線的交易,對於之間有關聯的交易,分片對效能的提公升將會受到影響。所以分片技術應用於區塊鏈有其獨有的優勢和挑戰,現在應用於區塊鏈的分片技術主要有幾種:網路分片、交易分片以及狀態分片等。

網路分片

網路分片就是開發一種機制來確定哪些節點可以按照安全的方式保留在哪些碎片中。這樣能避免那些控制大量特定碎片的人所發起的攻擊。通常隨機抽樣的方式可以防止惡意節點過度填充單個碎片。

交易分片

交易分片就是通過使用者交易的輸入輸出資料並根據一種演算法(如雜湊值)來確定交易資料的分片。但是這種方法不能有效避免雙花攻擊,除非資料跨碎片進行通訊,但這又可能會破壞交易分片的目的——提公升交易吞吐量。但根據交易者的位址資訊來分片的話就可有效檢測到雙花攻擊,而不需要進行任何跨碎片的通訊。

狀態分片

狀態分片就是通過把區塊鏈資料分成不同狀態的資料來分片的一種技術。在狀態分片的情況下,重新分配節點是非常棘手的。乙個特定的碎片只會保留一部分狀態,如果在一次重新調整網路的過程中,在同步完成前可能會出現導致整個系統失效的問題。

但是trias探索了分片技術的新方向,通過把交易分片和狀態分片技術組合,彌補了各自技術的缺點,使分片技術可以更好地應用於區塊鏈。

trias分片mvp在真實區塊鏈基礎上,加入主鏈用來協調處理各分片交易,另外又在此基礎上加入負載均衡和資料庫,分別用來分發交易請求和儲存賬號資料。

具體的架構請參照下圖:

loadbalance是乙個負載均衡層,所有的交易請求通過loadbalance進行處理,當前分為兩類請求,一類是查詢請求,loadbalance會直接請求storage查詢並返回,還有一類是交易請求,loadbalance請求storage獲取交易涉及的chain,將請求**給root_chain處理。當前loadbalance通過openresty實現。

storage

storage做為儲存層儲存交易賬號資料,包括賬號名,chain id,餘額等,只有loadbalance會直接與storage互動,涉及到查詢和更新。當前storage通過etcd實現。

root_chain

root_chain作為乙個主鏈在跨鏈交易時會生成交易憑據,各child_chain依據主鏈的憑據進行操作。當前版本child_chain要接收到root_chain請求就會操作,還未實現root_chain和child_chain的校驗。當前root_chain通過python實現,開啟乙個rpc,api接受loadbalance請求,判斷是否跨鏈,產生交易生成憑據並將結果返回給loadbalance。

child_chain

MongoDB分片技術

在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分割槽類似,我們知道當資料量達到t級別的時候,我們的磁碟,記憶體 就吃不消了,針對這樣的場景我們該如何應對。一 分片 mongodb採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。下面我對這張 釋一下 人臉...

mongodb分片技術

在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分割槽類似,我們知道當資料量達到t級別的時候,我們的磁碟,記憶體 就吃不消了,針對這樣的場景我們該如何應對。一 分片 mongodb採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。下面我對這張 釋一下 人臉...

MongoDB分片技術

在mongodb中存在另外一種集群,就是分片技術,當數量級達到tb的時候,磁碟和記憶體就會吃不消,這個時候就要用到mongodb的分片技術了。mongodb分片技術 將集合進行拆分,然後將集合均攤到幾個分片上面。概念解釋 mongos 首先我們要了解 片鍵 的概念,也就是說拆分集合的依據是什麼?按照...