以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > Fil > Info

探究 | 區塊鏈底層平臺的流控分析及實踐_區塊鏈:區塊鏈運用的技術不包括

Author:

Time:1900/1/1 0:00:00

原標題:《HoldtheDoor!區塊鏈底層平臺流控分析》

導讀

流量控制是為了解決在面對不確定的和不穩定的流量沖擊下,依舊能夠保障系統的穩定運行。如果不對系統實施過載保護,大量流量沖擊可能影響系統穩定性,甚至引起“雪崩效應”,導致系統崩潰,停止服務。

當無法預測和控制入口流量時,則系統需要進行流量控制。要想達到系統流控的效果,系統流控策略需要從系統整體架構出發,站在系統流量來源、系統總體架構、系統模塊資源分配等角度進行分析,從而制定出符合系統的流控策略。

流控緯度分析

▲?流量來源角度

區塊鏈節點的入口流量大體分為兩種,一種為客戶端發送過來的請求,請求可能為區塊鏈數據查詢、發送新交易、合約操作等。節點接收到客戶端請求后,首先需要從網絡IO流中讀取到請求的字節內容,然后反序列化字節內容為結構化內容,最后根據結構化請求體調用對應的API邏輯;另一種為其他區塊鏈節點發過來的網絡消息,區塊鏈系統底層是由多個共識節點組成的共識網絡,節點間通過計算機網絡進行信息傳輸。節點接收到對端節點發送過來的網絡消息后,根據消息類型,拋給對應的模塊去處理。

GameStop以監管不確定性為由下架加密錢包:金色財經報道,知名視頻游戲零售商 GameStop (GME) 宣布,在推出該服務僅一年后,它將取消對加密錢包的支持,理由是美國的監管不確定性。其網站稱,由于加密貨幣領域的監管不確定性,GameStop決定于2023年11月1日從市場上撤下其iOS和Chrome擴展錢包,客戶可以在10月1日之前訪問。

GameStop加密錢包大約于一年前推出,允許用戶通過去中心化應用程序管理加密貨幣和NFT,并支持GameStop的NFT市場交易。去年12月,該公司進行了裁員,其中包括多名負責開發其加密錢包的軟件工程師。[2023/8/2 16:12:58]

因此,不僅需要對客戶端請求進行流量控制,防止大量突發外部請求都往同一個節點發送,耗盡目標節點資源導致目標節點服務癱瘓。還要對節點接收到的網絡消息進行限流,防止節點在高負載下,前面的消息涉及的系統邏輯還未處理完,還源源不斷地接收和緩存后面到來的消息,甚至導致節點內存溢出。總結起來,即區塊鏈節點入口流量有兩種,一種為客戶端請求,另一種為節點間網絡消息,需要分別對這兩類流量進行限流。

▲?總體架構角度

同一個節點或分區內的不同模塊,存在資源競爭問題。以趣鏈區塊鏈底層平臺為例,存在網絡資源競爭的模塊主要包括:

數據:Binance、Coinbase和Gemini等幾家知名加密貨幣公司員工的幸福感最差:金色財經報道,科技招聘公司TrueUp整理了來自工作審查平臺Glassdoor的數據,繪制了加密貨幣公司在員工幸福感與增長方面的情況。27家最有價值的加密貨幣公司被放在TrueUp的象限圖上。圖表顯示,已停業的加密貨幣貸款公司Celsius、加密貨幣交易所Gemini和加密貨幣交易公司Amber Group的員工幸福感最差,Binance和Coinbase也出現在該圖表表示的幸福感最差區域。[2023/7/6 22:21:33]

共識模塊區塊數據同步模塊NVP模塊文件上傳下載模塊其中,共識模塊是決定系統服務質量的關鍵模塊。因此,為了保證系統的高可用,需要保證關鍵模塊的流量得到優先處理,限制非關鍵模塊可使用的流量,避免非關鍵模塊搶占了所有系統資源。

▲?多分區架構角度

如下圖所示,多分區的區塊鏈系統架構下,每個分區都有一條單獨的鏈,雖然同一個節點不同分區間共識、執行和存儲完全解耦,但是不同分區共享同一個計算機資源,因此,多分區本質上也存在資源競爭問題。

Ordinals協議存在銘文編號漏洞,創始人稱可通過升級解決但會影響之后的編號:5月5日消息,據推特用戶bitrabbit_btc的推文,有位推主發現了Ordinals協議的一個bug,3492721號這個銘文,是0輸入0輸出都是0值,卻能夠被刻上銘文并編進編號。Ordinals創始人表示這個問題很奇怪,但是可以通過升級Ordinals程序來解決,但是會影響3492721之后所有的銘文編號。

這位推主還以在程序未被升級之后最快速度發布了指南,并號召實施相同的行為攻擊Ordinals。他實施這次行為可能是反對在比特幣L1上進行這些占用比特幣空間的銘文活動,并且發布了一條側鏈Spacechain的設計說明,認為這些銘文活動應該在二層進行。[2023/5/5 14:44:40]

當多分區架構被應用于業務分區而治場景時,不同分區上運行著不同的業務,如果不對分區流量進行控制,可能存在分區1業務負載極大情況下,分區2雖然空閑,但由于此刻沒有空閑計算機資源可用,發往分區2的請求可能需要很久才有響應,甚至出現拒絕服務。因此,多分區架構下,不同分區存在資源競爭,需要對各分區流量進行限流。

▲?有限帶寬角度

有時候,我們不希望節點的運行搶占了所有的網絡帶寬,導致其他程序無法提供服務,這時就希望機房里分配給節點服務器或者分給某個進程有限的帶寬。由于帶寬有限,這就要求提高節點帶寬利用率,并且保證關鍵流量被優先傳輸,優先保證系統穩定性和可用性。

MAYC系列NFT近24小時交易額增幅超500%:金色財經報道,OpenSea數據顯示,Mutant Ape Yacht Club(MAYC)系列NFT近24小時交易額為522 ETH,24小時交易額增幅達553%,24小時交易額排名位列OpenSea第二。[2022/10/12 10:32:33]

常見流量控制算法

在分析完不同角度的流控后,我們需要選擇出適用的限流算法。目前常見的限流算法,主要有以下兩種:

漏桶算法令牌桶算法▲?漏桶算法

漏桶算法的原理可以類比為往一個固定大小的桶里盛水,同時,水從桶底漏洞以固定速度流出,如果加水過快,則直接溢出,如下圖所示。它可以應用于網絡傳輸限流,計算機每發送一個數據包,如果桶內未滿,則把數據包放入桶里,如果桶內已滿,則丟棄數據包,與此同時,以固定速度從桶內取出數據包,發送到網絡,從而達到強行限制數據平均傳輸速率的目的。

圖片來源于網絡

漏桶算法常用于將突發或不穩定流量整形為以固定速度在網絡中傳輸的流量。

以太坊合并歷史數據公布,PoW鏈上交易筆數超 17.1 億筆:9月16日消息,歐科云鏈OKLink公開以太坊合并歷史數據,ETH PoW 歷史鏈上總交易筆數超 17.1 億筆,共有 15,537,393 個區塊,燃燒銷毀 262 萬枚 ETH,挖礦礦工總數達 5,624,歷史最大算力為 1.05EH/s。

在以太坊共識正式從 PoW 轉為 PoS 機制后,據OKLink多鏈瀏覽器監測,截止目前,以太坊總驗證人近 43 萬,達 429,509;以太坊質押量超 1370 萬枚,其中,Lido 位居以太坊質押排名榜第一,占比為 30.28%。[2022/9/16 7:01:31]

▲?令牌桶算法

對于要求允許某種程度的突發傳輸,漏桶算法顯然無法滿足需求,而令牌桶可以做到這一點。令牌桶算法同樣定義了一個固定大小的桶,桶里最多可容納b個令牌,每當有數據包需要發送時,要從桶里取出對應數量的令牌才能發送,如果桶里沒有足夠令牌,則無法發送。與此同時,以固定速度r往桶里添加新令牌,當桶里令牌數已經達到b個時,丟棄新令牌。

圖片來源于網絡

令牌桶算法非常適合于針對系統外部請求的限流,當桶內有足夠多令牌時,系統在某一時刻可以同時接收并處理多個請求,充分利用到系統資源。

總結來說,令牌桶限流允許突發流量,對于請求的限流、網絡帶寬限流,更能充分利用系統資源和網絡資源,是適用于區塊鏈底層平臺系統流控的一種限流方法。

流控實踐

最終,我們采用交易攔截器限流+消息分發器限流+網絡帶寬限流組成三道限流閥門,來應對不同業務場景的壓力,保證系統具備較高處理能力的同時又能穩定運行,持續可用。

▲?交易攔截器限流

主要用來限制客戶端到節點的流量。具體指在系統達到交易最大處理能力時,接口服務層及早對新交易進行攔截并拒絕,阻止新交易滲透到主流程花費不必要的系統開銷,一定程度上讓出更多的系統資源去處理未完成的交易。

交易攔截器通過定義攔截規則,來達到限流的目的,最終效果包括:

限制請求速率:通過令牌桶限流算法控制請求速率,并限制節點最多可同時接收并處理的HTTP請求數。節點高負載下拒絕新交易:當節點交易池已滿或者處于異常、異常恢復狀態無法進行正常三階段共識時,拒絕來自HTTP客戶端發送過來的新交易,避免交易解析、交易驗簽帶來的CPU消耗。▲?帶權消息分發器限流

主要用來限制非關鍵模塊的流量,防止帶寬、CPU和內存都被非關鍵模塊給占用。具體做法是為各個需要進行網絡通信的模塊分配帶緩存空間的讀、寫管道,根據模塊在系統中所占權重為其管道分配不同的緩存大小。

消息分發器收到一條來自底層P2P網絡的網絡消息,根據消息類型將消息分發給對應模塊進行處理。這條消息首先分發給模塊對應的R管道,模塊再從R管道按照FIFO原則取出消息,執行相關邏輯,如果R管道消費速度慢于生產速度,導致分發消息時R管道已滿,則說明模塊內部已處于高負載,丟棄這條消息。為了保證達到系統限流目的,模塊從R管道取出消息并處理消息的過程必須是串行的,而模塊間的消息并行處理,互不干擾。

舉個例子,當非關鍵模塊處于高負載處理能力變慢時,其R管道雖然占滿,但是不會影響共識模塊消息的處理速度,同時又由于不同模塊根據權重R管道大小不同,一定程度上防止節點一直處理非關鍵模塊消息占用過多系統資源而導致共識模塊消息無法得到及時處理。

帶權消息分發一定程度上降低了各模塊由于處理能力差異而相互干擾,提高系統網絡消息并行處理能力,保證核心網絡消息不被非核心網絡消息占去全部系統資源,同時,系統高負載下自動丟棄新接收到的網絡消息,防止系統負載過高而崩潰。

▲?網絡帶寬限流

本文所提的網絡帶寬限流特指限制節點間通信的最大出口帶寬流量,該實現基于GuavaRateLimiter限流。開啟出口帶寬的限制一定程度上會比關閉帶寬限制帶來一定TPS的損失,前期經過測試,我們發現,TPS大幅下降主要原因在于開啟帶寬限制后,我們沒有對節點處理能力進行“降級”,導致節點有限的帶寬都被用于交易轉發而無法在規定時間內發送或處理相關共識消息而極易進入異常狀態,而異常狀態下節點拒絕新交易,最終導致系統整體交易吞吐量大幅下降。

因此,經過適當修改后,當開啟節點出口帶寬限流時,根據設置的帶寬上限值自動計算交易轉發速率,通過控制交易轉發速率,使得出口帶寬可以被共識關鍵網絡消息充分利用。這種網絡帶寬限流方法,相比直接使用TC限流,一定程度上,可以提高有限帶寬下節點運行的穩定性,并且使得TPS下降在預期可接受范圍內。

▲?分區間限流

每個分區通過交易攔截器+帶權消息分發來達到限流的目的,從而均衡分配各個分區使用的系統資源。這里不再闡述。

總結

本文通過從多個角度對區塊鏈系統流控進行分析,并得出適用于系統的流控策略,有效解決了節點在各壓力測試場景下系統不穩定、容易崩潰的問題,同時保證節點高性能和高穩定性。除了上文的實踐以外,后續我們還將進行多種優化,包括但不限于讀/寫請求并發的限流、限流權重動態調整等等。

作者簡介

馬曉敏來自趣鏈科技基礎平臺部,區塊鏈底層網絡研究小組

參考文獻

?Leakybucket-Wikipedia

?bucketToken-Wikipedia

?超詳細的GuavaRateLimiter限流原理解析

Tags:區塊鏈加密貨幣以太坊GAME區塊鏈運用的技術不包括加密貨幣市場行情走勢分析VSYS幣會成為第二個以太坊嗎International Squid Games

Fil
波卡生態一周觀察丨Kusama開啟穩定的拍賣節奏,超1800萬DOT將用于建設波卡生態_POLK:polkadotstingray

波卡一周觀察,是我們針對波卡整個生態在上一周所發生的事情的一個梳理,同時也會以白話的形式分享一些我們對這些事件的觀察。本文旨在提供信息和觀點,不為任何項目作背書.

1900/1/1 0:00:00
Axie Infinity開發商Sky Mavis官宣完成1.52億美元B輪融資,a16z領投_INF:NFI

巴比特訊,NFT游戲AxieInfinity的開發商SkyMavis官方宣布完成1.52億美元的B輪融資,a16z領投,Paradigm、Accel、FTX、SamsungNext等參投.

1900/1/1 0:00:00
Mirror.xyz 對外開放后,我應該在上面發布什么內容?_Mirror:United Emirate Coin

撰文:潘致雄 作為Web3領域的標志性應用,社交媒體平臺Mirror.xyz終于對外開放了,現在任何擁有以太坊賬戶的人都可以在上面撰寫文章或發表其他形式更豐富的內容.

1900/1/1 0:00:00
因電力短缺,哈薩克斯坦開始針對加密挖礦業務開啟限電措施_BIN:Ancient Warrior

據Neftegaz.RU10月21日消息,哈薩克斯坦國家電網運營商已經開始限制對該國最大的消費者——加密礦工進行電力配給.

1900/1/1 0:00:00
如何集成利用區塊鏈技術和機器學習?_比特幣:比特幣市場占有率

鏈集市?·讓區塊鏈落地更簡單 《區塊鏈行業觀察》專欄·第58?篇作者丨YugeshVerma 圖片丨來源于網絡 區塊鏈技術是近年來的發展趨勢.

1900/1/1 0:00:00
紐約梅隆銀行加入馬可波羅財團,旨在將區塊鏈技術引入國際貿易融資_UST:Noah Coin

巴比特訊,近日,紐約梅隆銀行發文宣布加入馬可波羅財團,致力于將區塊鏈技術引入國際貿易融資。其目的是使全球的供應商和買家的周轉資金數字化.

1900/1/1 0:00:00
ads