dfuse for EOSIO 架構剖析:架構總覽

買賣虛擬貨幣

自從我們釋出了開源和二進位制程式“ dfuse for EOSIO”以來,許多人請我們來解釋它其中所包含的基礎架構。Alex 會帶你瞭解“ dfuse for EOSIO”的17個微服務以及它們各自的作用。每一個微服務都會有專門的影片講解,所以請關注我們,跟進我們的更新!

內容轉譯:

大家好。很高興今天要開始一個講解 dfuse 架構的系列影片。在這個系列中,我們會介紹所有構成 dfuse 例項的元件,dfuse 的設定。現在大家都可以用 dfuseeos。它其中包含所有這些元件,可以在膝上型電腦上執行,還可以部署在某些叢集上,每個叢集然後可以分別部署元件,獨立擴充套件。我將介紹所有這些元件,讓大家更好地瞭解 dfuse 體系結構的總體思路。

在這第一集中,我先列出每一個元件,之後我們會一集一集地講解各個元件。所以這集只是一個基本概述。那我們就先開始吧。

當我們想用 dfuse 啟動新專案時,輸入 `dfuseeos init`。確認彈出的問題(輸入 `y`)。它會為本地例項啟動完全版配置。這的配置基本上就是說:當你啟動它時,你是在一個程序中同時啟動所有的這些元件。他們都用 config 標誌中的預設值,都是互連的,但是他們之間用的是 TCP 介面,你可以輕鬆地將它們拆分。直接更改 flag 就可以讓他們相互交流。再然後,就可以開始擴充套件部署了。這裡你看到的就是每個元件,你可以用 `dfuseeos start` 命令調出所有可用元件的列表。你可以單獨啟動其中一個,或者兩個,或者全部。然後,這還有各種 flag,特定於不同程式,apiproxy 什麼的,各種 flag 那裡供你配置這個例項。那我就先把每個元件過一遍,告訴你它的大致功能,然後再分別做影片細講每一個,ok?

這裡的第一個元素,我跟你把它組合著說吧,搜尋系統是由四個部分組成的:search live(實時搜尋)、search-forkresolver(分叉處理器)、search-indexer(搜尋索引器),search-archive(搜尋存檔)。索引器是從鏈上獲取資料的。我們會在另一集中講資料的產生。好,(索引器)提取資料,對其進行索引和歸納,以便搜尋存檔可以使用它。實時搜尋就是實時地索引區塊,再實時地進行查詢。分叉處理器可以讓你在分叉出現後重新再觀察它,也就是 dfuse 提供的高度保證的方式。那這幾個就組成了(dfuse 的)搜尋功能。

然後還有 mindreader(讀心器),跟 node-manager(節點管理器)基本上是一起工作的。這兩個元件會包裹 nodeos,執行並操控它。我會專門給 mindreader 做個影片。它們一個會在出塊節點上執行,一個在讀取節點上執行。它的設定讓你在同步另外的一個鏈的時候不用執行出塊節點,但是功能卻都在那。這我們在另一個影片裡再細講。

再有就是這個 merger (合併器)。merger(合併器)存在的意義是為了提供高可用度的設定。它會把 mindreader(讀心器)生成的區塊融合在一起並在一旁儲存起來,以便任何程序可以訪問區塊資料,在某種意義上類似於 state-history(狀態歷史)的功能。但是這個東西包含了所有的分叉,所以讓你總能準確的觀測它。之後我們再深入介紹一下這個。

trxdb-loader(交易資料庫讀取器)是會從 nodeos 提取所有的資訊,將其寫入成簡單的鍵值儲存模型。它基本上就是是對區塊、交易、交易痕跡,以及所有這些東西的儲存。trxdb-loader 會把它們輸入進去。

然後我們還有eosq,eosq 是一個你會愛上的區塊瀏覽器。(提供的資訊)最深度,還很豐富。基本上就是個區塊鏈的放大鏡。它是內建於 dfuseeos 的,啟動本地例項它也會跟著啟動。有所有的流讀取功能、所有用於除錯的深度資料,很酷的。

好,apiproxy 就很簡單了,我們把它放在前面只是為了你可以路由到不同的程序,還讓它同時看起來像一個真實的 dfuse 部署。當我們給出一個 dfuse 的端點時:比如 mainnet.eos.dfuse.io,這時有了apiproxy,它會給你個類似的東西,同時可以路由到不同的元件,不需要在它前面再執行執行 Nginx 或其他東西。這樣即使你需要把各個服務分離開也是可行的。就是內建了一個小的 nginx。

fluxdb,我認為,是一項做的非常不錯的工程,非常特別,它與區塊鏈緊密交織在一起。它就是那個資料庫,為你提供歷史上任何高度的區塊鏈狀態。是經過精心設計的,透過特殊的索引策略去讀取各個區塊高度上的狀態。

blockmeta 像是整個架構的脊柱,blockmeta 始終了解的區塊鏈的狀態,幫助不同的系統判斷:”我是不是同步的?“所以,blockmeta 是一項簡單服務,(透過它我們可以知道)那個區塊是可逆的嗎?最高的區塊是什麼?小東西,但是是脊柱,同步所有資訊去了解網路的狀態。

然後,dgraphql 是 GraphQL 介面。它去呼叫其他系統。基本上它就是介面和呼叫。

這裡的 relayer(中繼器)元件是幫助你擴充套件你的基礎架構的。我們會在 mindreader(讀心器)來自第一層的資料。relayer(中繼器)是一種展開的機制,用於區塊的傳播——就是一個拓撲的概念。我們會專門做影片講。

然後 abicodec 是專門對 ABI 的 JSON blob 編碼和解碼的。它知道任何高度的 ABI,能夠解碼和編碼。小巧的專屬服務,在你需要時可以用上,我們可以把它分開擴充套件。abicodec,編碼器,解碼器,對吧。

eosws 是我們最早做 dfuse 時做的的專案之一。它擁有所有的 websocket 機能,還會轉發一些資訊到其他服務中。它包含所有交易推送保障功能,也還有好多其它的地方。我們專門做影片給大家講解哈。

這裡的儀表板是專門 dfuseeos 的,二進位制檔案。這不是我們在生產中交付的東西,只是在執行過程中為了幫助你瞭解這些應用的。他們在執行嗎?處於什麼狀態?等等。單個二進位制檔案的除錯工具。

我希望這是能幫助大家弄清,揭開一點元件的神秘面紗。而且我們會在這一系列影片中對每個提到的元件進行深入。謝謝你與我們同在,再見。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;