區塊鏈負載均衡:「多碗水端平」

通過前置代理背後配置的輪詢機制、均衡的流量分發調度機制以及鑑權機制等,向節點發送交易請求,確保每一筆交易發送成功,穩定上鍊。此外,管理員可以為不同的應用端配置不同的AccessKey以區分標記,實現應用端調用聯盟鏈的高效管控。

完成區塊鏈應用的搭建,除了要編寫和部署智能合約,還需打通業務系統和鏈上智能合約的交互,但在實際場景中,底層區塊鍊和業務應用端之間的對接,往往會存在一系列的問題:

1)目前區塊鏈底層種類多樣,應用對接的方式各不相同,業務應用端往往對接成本高,邏輯複雜;

2)區塊鏈本質上還是去中心化的數據庫,某些應用場景下,業務高峰期,光一個應用的交易請求都可能導致節點癱瘓宕機。更進一步的,當對接多個應用端時,由於每一個節點都是單點,更有可能會成為限制區塊鏈系統高可用性的瓶頸。因此,區塊鏈管理者需要重點關注當一個或多個應用同時發起交易請求時,如何既保證交易請求不擁堵,又保證交易的成功率;

3)對接多個業務應用端時,如何保證統一的鑑權或黑白名單控制,並實現所有交易留痕審計和統一管控。

為解決上述痛點,趣鏈BaaS平台研發了前置代理,實現區塊鏈的負載均衡。通過為區塊鏈底層綁定前置代理,為其分配統一的獨立網絡IP,並對訪問接口進行封裝,實現在權限控制下業務應用端與鏈上節點進行通信。本文將詳細介紹前置代理的原理和應用實例。

什麼是負載均衡?

負載均衡(Load Balance):將負載(工作任務)進行平衡、分攤到多個操作單元上進行運行,例如FTP服務器、Web服務器、企業核心應用服務器和其它主要任務服務器等,從而協同完成工作任務。究竟什麼是“負載均衡”?我們用幾個通俗例子講解:

例一

領導安排了一個重要任務,可部門只有一個人,任務量巨大一個人無法完成,於是又招了幾個人一起來處理這個任務,同時領導親自將這個任務劃分成了多個不同的小任務,並分配給不同的人。任務分配的過程就是“負載均衡”。

圖片例二

某個打車APP,僅有一台服務器可以承載100人同時訪問,然而一到早晚高峰期或者下雨天,會有1萬人同時段發起打車,這段時間就會有1萬多客戶端對這台服務器同時發起請求。一台服務器是遠遠無法支撐業務的進行,那該怎麼辦?答案是:進行擴容,添加99台服務,用以維持1萬用戶對APP的訪問請求。

但這也會引發很多問題,如果請求都打到一台服務器怎麼辦?那剩下的99台依然沒有用處。這100台服務器如何分配任務?如何分配能既保證高峰期的巨大訪問量,又能保證非高峰期的最低的能耗?這個時候就輪到負載均衡登場了。

圖片圖片區塊鏈負載均衡如何實現?

區塊鏈任意節點都是單點的,業務應用端在對接區塊鏈節點時,為了保證高可用性也會連接多個節點,因此也會遇到一樣的問題,應用端應該給哪個節點發送交易?這就需要採用負載均衡對應用端的請求做分配轉發。

圖片圖片

區塊鏈本質是分佈式賬本,是分佈在網絡上多個節點或計算設備上的數據庫,雖然分佈在網絡中的每個節點,但都是複制並存儲同一個賬本的副本,每一筆交易發起後會經歷一段時間的節點共識,所以除了要採用傳統負載均衡的隨機分發、權重分類、最小連接數分發等固定策略進行分發,還需要針對區塊鏈的真實業務量做特性適配。

比如:業務端和區塊鏈節點之間是同步通信的,當交易量過大時,會存在交易尚未成功,業務端就無法發起新的交易,從而導致業務端擁堵的情況,如果把所有交易全發送給節點,則可能會導致節點的擁堵。所以在傳統負載均衡的基礎上,對業務端發送的交易做緩存處理,保證其既存在同步請求,又存在異步請求,避免業務端和節點的擁堵。

趣鏈BaaS與負載均衡

核心流程聯盟鏈管理員通過瀏覽器訪問BaaS平台(如圖步驟1),給綁定特定聯盟鏈的訪問代理配置訪問憑證(AccessKey)(如圖步驟2);

應用開發者自定義開發區塊鏈應用(如圖步驟0),應用端通過攜帶AccessKey信息申請訪問聯盟鏈,先將鏈上請求發送給訪問代理(如圖步驟3);

訪問代理接收不同應用端的交易請求,將交易請求信息緩存到數據庫中(如圖步驟4);

通過輪詢的機制、均衡的流量分發調度機制以及鑑權機制等,向節點發送交易請求(如圖步驟5)確保每一筆交易發送成功,成功上鍊;

應用端的請求記錄均會回傳至BaaS平台,用戶可以通過BaaS平台查看相關的訪問業務指標,有全方位的掌控。

圖片圖片

具體實踐

以上一篇NFT合約為例,詳見原文《看完這篇!新手也能寫NFT合約》,本章將介紹如何在趣鏈BaaS平台內,為示例聯盟鏈綁定前置代理,便於應用端訪問示例鏈並調用NFT合約。

準備工作:創建示例聯盟鏈並部署NFT合約,複製合約地址以備用。

圖片圖片

創建前置代理並綁定示例聯盟鏈:在前置代理創建頁面內,選擇示例聯盟鏈zzhhpc2011,並選擇部署前置代理的主機。在完成網絡檢測後,可快速完成前置代理部署。

【參數配置頁】

圖片圖片

【部署進度頁】

圖片圖片

綁定AccessKey:隨後為前置代理綁定一組特定的AccessKey。

圖片圖片

在應用端配置必要信息:將示例聯盟鏈的信息、前置代理訪問URL、NFT合約地址和AccessKey等信息配置在應用端,應用端即可調用該NFT合約。

圖片圖片

應用端訪問:應用端開發者可攜帶AK信息申請訪問聯盟鏈,若鑑權通過則可以訪問已授權前置代理的節點,並進行調用合約實例的操作。

下圖是一個可視化demo頁,先以選擇mint方法,在頁面內的參數框內填寫nft合約的部署地址、nft的所有者地址、nft編號等信息,其他方法的調用相同。

圖片圖片

調用成功後返回如下結果:

圖片圖片

聯盟鏈管理員查看應用端調用記錄:如下圖,回到趣鏈BaaS平台內的前置代理頁面內,可查看通過前置代理進行的調用記錄詳情,可幫助聯盟鏈管理者直觀洞悉不同應用端的調用情況,在實操時可根據需求自定義查詢,如按客戶端地址、訪問節點IP、調用方法等。

圖片圖片總結

上例詳細展示了趣鏈BaaS在實現區塊鏈與鏈外應用端對接方面的解決方案。通過前置代理背後配置的輪詢機制、均衡的流量分發調度機制以及鑑權機制等,向節點發送交易請求,確保每一筆交易發送成功,穩定上鍊。此外,管理員可以為不同的應用端配置不同的AccessKey以區分標記,實現應用端調用聯盟鏈的高效管控。

展開全文打開碳鏈價值APP 查看更多精彩資訊

Total
0
Shares
Related Posts