日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

吞吐量-Corda的故事

發布時間:2023/12/3 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吞吐量-Corda的故事 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我最近開展了一個針對特定用例的Corda性能項目。 這個項目的結果使我們在170多個節點的網絡上一天之內處理了1.15億個請求。 此外,Corda每秒能夠處理6300個請求,確認滿足了網絡的最高要求。 迄今為止,這是迄今為止已部署的最大的Corda網絡,并且實現了最高的吞吐量。 證明Corda可以在非??量痰沫h境中交付。

這項研究是由埃森哲為DTCC進行的,該研究還探討了另一個DLT平臺,數字資產。 有關更多信息,請參見新聞稿。

DTCC宣布研究結果,表明DLT可以支持美國股票的交易量…
突破性的研究表明,DLT每天可處理超過1億筆交易紐約/倫敦/香港……www.dtcc.com

在這篇文章中,我將利用我在該項目中獲得的經驗來描述如何還可以從Corda中獲得最大收益。 我希望不久的將來會有與我們為DTCC所做的類似的項目,我希望這里的信息可以幫助其他開發人員指明正確的方向。

結果怎么樣? 好吧,這并非沒有困難。 但是,我認為我們做得很好。 更準確地說,我們證明,如果精心設計網絡并精心設計CorDapp,Corda可以達到很高的吞吐量。 是的,我知道我基本上是在說,如果您做的一切正確,那么一切都會順利進行。 真的很重要。 當我們在整個項目中調整CorDapps時,我們發現了可以大大提高應用程序性能的途徑。 進行這些更改可以使我們越來越接近我們的目標。 但是,如果我們不以特定方式設計網絡,那么這一切都將無關緊要。

需要Corda Enterprise來實現最高的性能
這是將性能提高10倍或將計算機的內核數提高最簡單的方法。 除其他事項外,Corda Enterprise允許在節點內運行的Flow Worker的數量從1增加到很多。 這影響了可以在節點內異步運行的流的數量。 但是,這不會改變在每個版本上以相同速度運行的各個Flow的性能。 實際上,沒有企業版,您將永遠無法實現極高的性能目標。

如果您的用例不需要達到這種性能,那么開源版本將滿足您的需求。 例如,由于DTCC處理的請求量和需要處理的比率非常大,因此我們100%需要將Enterprise用于我們的項目。 另一方面,如果我們要處理貸款的處理。 與DTCC的需求相比,流經節點的請求速率將大大降低。 在這種情況下,使用開源就足夠了。

方便地,企業代碼和開放源代碼兼容,使您可以輕松切換。 部署方面存在差異,并且在進行更改時很有可能需要擺弄這一方面。

企業版本和開放源代碼版本之間的兼容性使您可以嘗試兩者,從而確定最適合您的需求。 這樣,您就可以開始在開源上編寫應用程序,直到認為有必要切換到企業版為止。

考慮一下您的網絡
我確實非常想強調網絡體系結構的重要性。 我什至不想考慮如果堅持我們的原始設計將會獲得的性能。 實際上,我們取消了原始設計,因為它從根本上存在缺陷,并且會阻止實現我們目標的任何希望。 就我個人而言,我認為本節一半是關于Corda,一半是關于構建一個好的解決方案。

分片以提高大規模性能
在撰寫本文時,Corda不支持負載平衡。 當前,單個節點將為其代表的身份處理所有工作。 這是他們充分意識到的領域,也是他們在不久的將來要努力進行的工作。 如果在那里,那么可能有可能僅僅依靠旋轉大量支持單個Corda節點的實例。 這將導致更多的計算能力,并因此增加吞吐量。

由于負載平衡尚未準備好,而且我們只有一個參與者坐在網絡中間,這是處理請求的巨大瓶頸,因此我們不得不以不同的方式處理整個網絡設計。 作為補償,我們必須考慮一種方法,以便將我們自己的水平縮放比例提供給系統,因為必須刪除位于中間的單個節點。 如果不解決這些問題,我們將無法實現每秒6300筆交易的網絡吞吐量。

我們的解決方案? 分片。 我們確定了一種方法,可以從邏輯上將一個參與者分解為許多非常小的部分。 每個處理請求彼此并行。 這需要一些額外的邏輯來將請求路由到正確的分片節點。 但是,此解決方案可能節省了項目。 我們從未測試過單個瓶頸節點的性能,但是,我100%確信我們不會達到目標。

下面我提供了兩個圖表。 一種使用單節點設計的示例過程,另一種采用分片方法。

單節點

分片

我將讓圖表說明一切。 由于該信息仍然是機密的,因此我將不進一步研究該實現。 那里應該有足夠的信息來理解我們為什么做以及做什么,而不是我們如何實現。

您可以想象第二種設計將產生更高的吞吐量。 它還具有在將節點添加到網絡時線性擴展的優勢。

在原始設計中,吞吐量對于少量節點可能是可以接受的。 但是,當您遇到較大的數字(例如100),甚至可能只有10時,您會注意到性能下降。 這完全是由于整個網絡依賴單個瓶頸節點可以處理請求的速率。

消除具有多個公證人的額外瓶頸

可以提高網絡整體性能的另一個領域是使用多個公證人。 當網絡的吞吐量已經很高時,單個公證員將開始成為工作流程的瓶頸。 遵循與上一節相同的想法。 公證人可以分片。 允許每個人處理較小數量的交易。

每當我說“多個公證人”時,我只是想澄清一下我不是在談論公證人團體。

我已經寫了一篇有關利用多個公證人提高網絡吞吐量的文章,涵蓋了這個主題,而不是重復我自己,我將帶你去那里。

調整那些Cordapps

在Cordapps上。 您可以在這里做很多事情來提高性能。 大部分來自嘗試盡可能少地做。

  • 我需要發送所有這些交易嗎?
  • 對方是否真的需要簽署此交易?
  • 我的交易上有太多州嗎?
  • 發起方和交易對手之間的流跳了多少次?

這些都是對流程性能至關重要的問題。 我敢肯定還有其他地方可以提高性能(稍后我會介紹),但是這些是我現在唯一想到的地方。 我確定你知道圖片。

讓我們快速看一下最后一個問題。

  • 發起方和交易對手之間的流跳了多少次?

這實際上涵蓋了我提出的其他一些觀點。 無論如何。 每次跨網絡跳轉時,Flow的性能都會下降。 它需要從一個Corda節點移動到另一個節點,并且可能需要在某個時候回來。 在此期間,由于網絡延遲以及將流指向磁盤的檢查點的過程,您正在積累性能成本。

網絡延遲可以說明一切,不需要進一步說明。 另一方面,檢查點需要充實一些。 檢查點是序列化Flow當前執行的過程,以便在發生故障時可以從特定點重新啟動它。 這樣做需要序列化整個流程堆棧,這可能會很大,因此要執行的過程成本很高。

考慮到此信息,請確保您考慮是否真的需要進行這些跳躍。 盡量減少它們。 如果這樣做,我相信您會看到應用程序性能的提高。

這對性能有好處嗎?

對對對。 雖然,我們沒有衡量包括多線程在內的影響,但我確信它取得了很好的改進。 但小心點。 如果操作不正確,可能會有點麻煩。 在撰寫本文時,Corda不支持Flows中的多線程。 如果這樣做,您將得到一些奇怪的錯誤。 話雖如此,這是可能的。 您可以在Corda服務中執行此操作,而該服務在Flow的范圍之外運行。 通過將一些處理委托給服務,我們能夠利用線程來啟動新的Flow,每個Flow都是異步運行的,處理相似但分離的任務。

我在之前的Corda Services異步流調用文章中對此進行了介紹,該文章深入探討了該主題,并解釋了為什么您最終會在嘗試時失敗。

使用Corda感覺如何?

我發現使用Corda相對簡單。 當您嘗試實現更復雜的用例時,確實會變得更加困難。 但是,在大多數情況下,許多流程可以遵循相同的簡單結構。 在交易中添加一些狀態,進行驗證,讓所有必要的各方簽字并提交交易。

隨著事情變得越來越復雜,您需要牢記哪一方需要做什么。 例如,花費現金。 作為發起者,您不能將他人的現金狀態放入交易中。 您需要向他們發送一些信息,并要求他們將其添加到交易中。 像這樣的場景花了我一段時間才能適應。 隨著越來越多的開發人員花時間在Corda上工作,我相信這些概念將變得更容易理解。 將發布更多示例,并將分發有關如何編寫良好Flow的知識。

此外,我支持Corda提出的關鍵概念 。 仔細閱讀這些內容和提供的文檔后,我對Corda的理解大大提高了。

關鍵概念– R3 Corda V3.3文檔 本節介紹Corda平臺的關鍵概念和功能。 適用于 docs.corda.net的新手。

向前進

現在,我不代表Corda或R3,但是由于我們在整個項目中都與他們緊密合作,因此我可以說該平臺可能有所改進。

  • 使部署多個Corda節點更加容易。 R3與我們合作產生了一個框架,可以更輕松地部署節點,可以對其進行修改和推廣,使其適合更廣泛的受眾。
  • 性能。 Corda代碼中的一些區域可以進行調整,以便為獲得良好的性能而讓路。
  • 更好的多線程。 如前所述,這可以在Corda Services中完成,但有可能將其中一些轉移到Flows中。 主要側重于異步啟動多個subFlow并等待其完成。

包起來

在項目快要結束時,它肯定很忙,但是我們在1個月內就能夠實現巨大的性能提升,這是瘋狂的。 一旦我們改進了CorDapp,以充分發揮其性能,我們的人數便從““”升至“哇”。 幸運的是,我們正確地設計了我們的網絡以使這些數字成為可能。 如果網絡沒有按照原來的方式組合在一起,那么世界上所有的調整都將無法挽救它。

因此,Corda能否獲得良好的吞吐量? 是。 是的你可以。 使用Corda Enterprise可以使更高的性能目標更容易實現,并且可以減少最終工作量。 但是,這并不是正確的想法。使用本文中介紹的信息,您應該對如何設計高性能Corda應用程序或網絡有更好的了解。

展望未來,Corda的性能只會越來越好。 將其與如何設計應用程序的好主意相結合,應使您的數字從屋頂冒出來。

最后,在關閉這篇文章之前,我只想感謝R3,尤其是Stefano在此項目期間與我們緊密合作。

如果您認為這篇文章有幫助,可以在Twitter上@LankyDanDev關注我,以跟上我的新文章。

翻譯自: https://www.javacodegeeks.com/2018/12/throughput-corda-story.html

總結

以上是生活随笔為你收集整理的吞吐量-Corda的故事的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。