>>返回主頁
中國信通院工程師楊白雪:可信區塊鏈測試工具發布

2019-11-08 16:10

vbox11102__GL_5095_164459_small.JPG

  首先從這個頒獎典禮前后我們這個角色是不太一樣的,峰會上午是有關區塊鏈的戰略,在此之前是有關區塊鏈的產業,但是從現在開始接下來的幾個環節都是區塊鏈的測試。區塊鏈的測試算是區塊鏈技術里的藍軍了,如果把區塊鏈研發當作區塊鏈技術的紅軍,那我們就是藍軍。剛才男同胞們的圓桌討論有說過同行是冤家,但是還有一對水火不容的冤家叫做研發與測試。研發與測試的相愛相殺大家都是了解的,但是如果研發是火,那么測試就是水,水火并濟才能練出好鋼。好鋼才配用在刀刃上。

  我們討論今天給大家帶來的這款產品,中國信息通信研究院自主研發的商用級通用區塊鏈基準性能測試工具。我們還是以哲學三問的邏輯來,為什么要做這個事,做了什么事,怎么做的以及以后要干嘛。首先就是為什么,為什么我們要做這樣的項目?中國信通院在2018和2019年進行了兩個批次的區塊鏈性能測試。測試是區塊鏈技術質量的最后一道防線,那么為什么性能測試在里面顯得尤為重要?一方面是區塊鏈性能本來就是軟件非常重要的一個性能指標,在我們的國標和IC的標準里把評價軟件的質量分為了六大特性,性能是其中重要的一塊。再者從這個層面上我們來看,區塊鏈技術是不是能夠解決各種各樣的問題,達到某些特別好的效果?這個我們不敢認定。但是區塊鏈技術必然有一切軟件都存在的問題,這是我們測試存在的意義。

  另外就是區塊鏈的性能跟其他的性能還不太一樣的一點是,區塊鏈的性能是受多種因素影響的。就是這個區塊鏈的性能是受多種因素影響的,一方面從三角的內環,區塊鏈的安全性、區塊鏈的分布式程度和區塊鏈的可擴展性三者是互相限制的,也就是說區塊鏈的性能不是一個可以單一提高的部分。另外就是區塊鏈它的性能與它的資源消耗與它的網絡規模也是相互限制的,也就是說如果單一的去提高區塊鏈的性能很有可能會影響另外兩個角。所以說高性能的表現可能是有很多原因導致的,一方面現在這個藍色的它有可能是因為降低了網絡規模,降低了安全性或者增加了大量的資源消耗為代價。也有可能是它以更合理的系統架構與更優良的工程實現達到了好性能。但是這兩者策略里哪一種性能提高得更加明顯?顯然是犧牲得越多提高得越大。

  但是我們鼓勵的不應該是我們去吸收另外一些性能去成就某些性能。我們應該做的是從更好的工程實現與設計上讓軟件更加的流暢與可用。所以性能測試就是要去區分這兩種情況。你是怎么達到的好性能?不拿來測測大家怎么知道呢?下一個就是區塊鏈測試的基準非常重要,就是基準是什么東西?基準是一個統一的測試規范,也就是一把度量衡,一個尺子,給大家一個平臺比賽大家對工程的優化程度。它存在的意義是什么呢?它對于技術供給側的意義來說一方面可以做到技術自凈,就是我可以通過這樣一個公開透明的平臺證明我的技術是優良的是好用的。另外一個從倒逼的角度來說它可以促進技術供給方去主動優化自己的產品結構,然后達到更好的市場推廣。對于技術需求側優勢也是非常明顯,從什么地方可以知道市場發展得怎么樣?沒有,很難,全靠廣告,廣告是大家見仁見智的一些看法。

  所以說有這么一個平臺去測試可以讓技術的需求方更好的去對市場有一個直觀的把握。因此它能規劃自己合理的需求。如果我們大家都說自己的性能高上天,是不是市場方,需求方就會覺得我應該有一個高上天的需求。如果我的性能沒有高上天那是不是你就被淘汰了?在各方性能和性質里比較適合自己場景的一個選型,所以說這是一個對供需雙方都非常有利的一件事情。因此性能測試為什么重要?因為性能重要,因為性能測試重要,因為性能測試的基準重要。既然這么重要怎么可以沒有一個工具呢?所以我們基于此中國信通院自主研發了商用級的通用區塊鏈測試工具。在這個工具上怎么做這個工具呢?一開始我們還是要梳理清楚,我們通過兩年的性能測試表現,大概以這四個方塊是有比較大的互相制約的因素的,部署方案,配置方案,資源環境和計算方法。在這里面部署方案和配置方案是決定了你這個產品伸縮性怎么樣,然后它的安全性怎么樣,范圍怎么樣,規模怎么樣。然后這個私人環境里是規定了你的消耗怎么樣,這兩點其實是不可能三角里的兩角。對于性能它的計算方法和它使用的這個去測試的這個交易邏輯也是對性能有比較顯著的影響的。

  但是大家覺得這些里面哪些是能用工具解決的?部署和配置,這是產品自身的東西。環境是工具以外的東西。計算方法,只有計算方法是與測試工具相對來說有關系的一點。那么說我們要做一個測試工具實際上是要做什么呢?它要滿足的功能實際上是一個流程管理的功能,也就是這個圖的右邊,大家看就是藍色的這一部分,這才是一個測試工具,應該去著重解決的部分。但是它做的是一個流程管理的功能,但是它作為一個軟件大家對它有比較高的訴求是有這個性質的,一個是指標計算一定要準確,工具一定要容易上手易用,測試工具是不能被產品壓死的。另外就是通用性要好。沒有好的通用性各個平臺無法同時放在一個基準下進行比試。

  所以根據這樣的需求我們設計了這樣的功能。首先它依賴非常少,再有它要有可視化的界面,配置化的對接,盡量降低二次開發的量。另外是它有一種非侵入式的測試方式。最大程度的去保證測試報告的準確性。然后在我們整個開發的過程中,把區塊鏈、產品,對外對接的部分抽象成了這九類的接口,這是區塊鏈這個產品要跟外界接觸,我們認為最少必須要有的接口,大家看看這些口,首先從下面三個開始看,生成賬戶生成交易,發送交易,區塊鏈必須得有吧?沒有這個就沒有任何對外提供功能的接口了。另外上面的是區塊高度,共識節點數,這是一個區塊的配置上的東西,是一定會提供的。另外就是收到交易數,確認交易數,交易內容區塊的內容,這是交易過程必須要提供的統計信息,我們把各種各樣的區塊鏈產品提煉出來了這九類接口,只要存在這九類接口就都可以接到這個平臺上進行測試。

  另外就是如何去保證一個公平的計量指標?單一說一個性能我們覺得它是不合理的,因為性能不是一個單一的指標它是一個其他的因素限制了。我們今年的測試工具只單吞吐量有關的指標就有六個,它包含瞬時,這個平臺接受到了交易數,最高接受到了交易數。最高上線的交易數都是瞬時,以及確認和發送的,把這個產品接受到的交易數和上線的交易數是分開的。大家覺得這有什么區別?其實接受到的交易數也就是TPS,它代表的是一個平臺能抗壓力的能力,就是我來多少東西我這個平臺不會崩。但是一個平臺的處理能力,這個平臺的抗壓能力和處理能力實際上是有差別的,我們把它做了非常明確的區分。

  另外就是除了吞吐量以外的指標我們還統計了十一個,它包含交易確認時間,這個在某些場景尤其是實時性要求高的場景非常重要。交易的實時性就是交易的確認時間變長,一定程度上可以明顯的提高它的吞吐量。但是有些實時交易高的一定會對這個指標有所要求。在此給它有一定的計量。另外就是交易成功率的統計,在某些高安全的場景,交易的成功率非常重要,我們在此也有統計。另外就是每個區塊包含了多少交易數以及交易的延時,這個是區塊配置一個表現,大家都知道大區塊相對來說容易得到更高的性能,但是不是任何場景都能用大區塊去解決。我們把這些有可能跟性能有關的指標都予以了計量,盡量給大家一個公平、完整的結果。這是世界上幾個主要的區塊鏈性能工具的對比,也就是我們現在為什么在已經有工具的情況下還要去做新工具的原因。17年新加坡國立大學推出了(英文),是一個比較學術派的工具,它主要是測試了一批區塊鏈的性能指標并且發了很好的文章。但是因為這個工具開發的時間比較早,所以它的應用性和完成度都比較差。而且它沒有明顯的機制,它的性能是不能橫向擴展的。二次開發的工作量也比較大。2018年的時候聯合華為推出了區塊鏈測試工具(英文),作為一個大社區開源的平臺,它的這個產品的優點是完成度還是很高的。但是因為它是為(英文)產品準備的,所以它的通用性會比較差。如果我不是產品我去用這個它的二次開發量可能會比較大。而且(英文)有相當大的代碼量是在維護(英文)的原碼而不是用來去進行測試的這部分代碼。

  另外就是這個工具它的一個是二次開發,它是NOW實現的,它的性能上有一定的瓶頸。我們今年研發的首先它是云實現的,底層實現了非常完善的橫向拓展能力,所以它的性能非常好。再者它是用配置對接的方法通過抽象九類接口與其他的數字平臺對接的,一定程度上它的通用性是非常好的。另外就是這個產品是怎么做出來的,首先這個產品的整個開發流程經歷了這么樣一個過程,首先我們總結了現狀,對現狀進行了總結和抽象,抽象出來需要重點解決的重要的需求,然后根據這個需求去進行了工程化的實現,然后進行了測試對接并且已經進行了落地驗證。設計上我們總結了需求,高層需求就是易用正確高性能,針對需求我們提出了這樣的設計,比如說見面,比如說要配置對接,要有系統性的評價指標,要有很好的可擴展性,以及商用級的底層。所以我們設計了這樣一種實現,我們用GS做了前端可交互的可說話界面,做了HTTP式的區塊鏈接口對接,做了一個多指標體系的報告,并且用框架的這么一個工程進行了底層實踐,實現它的商用級通用性。

  另外這是測試工具測試中的幾個階段,這是我們在2018年峰會上向大家提出的設計,非常慶幸的我們2019年把它實現了,所以重新帶到峰會上給大家發布。存儲交易,然后再根據任務去發送這些交易,然后這些交易執行完以后通過去獲取已經落塊的區塊的數據去計算最終的報表。這是一個測試工具的架構圖,它最底層的有一個總控,總控是涉及各個可擴展性的壓力機之間的對接和通訊。設計了一個功能模塊是包括監控、計算,整個工具是由事件驅動的,通過改變狀態的方式去完成整個測試。高層是提供了結構化的接口驗證,提供剛好的可視化的交互。這是我們首批進行測試的7家單位,全部都是以配置的方式完成對接的。共識類型,幾乎涵蓋了除了比特幣,POW以外所有的共識類型,同時進行了三個場景的測試。這兒給大家錄了一個小視頻。這兒是做了四個集群,它只要把編譯好的拷過去,配置項主要是壓力機的就可以了,然后壓力機就可以啟動了。這是它的首頁,它的首頁包括交易數量,區塊高度和上線交易的監控以及一些IP的配置項,這是接口的配置點。我們九類接口都放在這里對接。這個我們以測試機的狀態會在這里顯示。然后我們展示這九個接口是如何配制的,非常簡單。

  這是我們以國內某著名開源聯盟鏈社區的開源產品進行的,配置好了所有的接口都可以在這里查看。配置好之后就可以串接任務了。這是生成交易體的任務,這是生成了一百萬的交易,其實已經很多了。然后再創建一個發送交易的任務,就是發送剛才生成的交易,然后這是工具就開始執行,執行這個任務。然后等待任務的執行,任務執行的過程中會有監控,實時的監控,任務啟動之后監控會在這個界面顯示,它會顯示每個交易的時間延遲。任務執行完畢之后就開始啟動執行報表了,執行報表也非常的簡單,只要點一下執行就可以了。測試報表的頁面等待報告生成完成,然后我們就完成了整個測試并且拿到了可視化的報告。

  這個是我們今年用這個工具測試的7個產品,測試的結果情況。這全部統計的是上鏈交易數不是單純TPS,是能體現這個產品處理能力而不是抗壓能力的。它今年大概的最高值大概在兩萬左右,中位值大概在兩萬這么一個數,十六節點和四節點的差距并不是非常明顯。在監控中我們會發現其實在磁盤的IO里是比較容易達到瓶頸的,帶寬的消耗也會比較大。也就是說在這么多的資源消耗,比較高的資源消耗之下,然后能達到這么樣一個程度已經是現在處理能力里大家能期待的比較正常的值了。

  另外就是這個測試工具研發出來之后要做什么?我們準備把這個工具開源出去也尋找成熟的開源社區與我們合作。希望能有成熟的開源社區和廣大愿意參與開源事業的同仁們,大家一起把區塊鏈測試和這個工具越做越好,讓我們一起用技術度量技術,用技術改變世界,站好區塊鏈技術的最后一班崗,謝謝大家。

0
湖南11选5-首页