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

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

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

 

內容轉譯:

大家好。很高興今天要開始一個講解 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 的,二進制文件。這不是我們在生產中交付的東西,只是在運行過程中爲了幫助你瞭解這些應用的。他們在運行嗎?處於什麼狀態?等等。單個二進制文件的調試工具。

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

 


 

你能在以下平臺上找到 dfuse 哦!

 

dfuse 中文官網:dfuse.io/zh

Github 源碼庫:github.com/dfuse-io

微信公衆號:dfuse API(通過【社區資源】菜單加入 dfuse 開發者羣)

微博:weibo.com/dfuseio

Bilibili:space.bilibili.com/596090399

Telegram:t.me/dfuseAPI

Twitter:twitter.com/dfuseio

YouTube:youtube.com/channel/UCT_wVH42n6jv-IG8C7QsHGg CSDN:blog.csdn.net/weixin_43891115

幣乎:bihu.com/people/1460622786

鏈節點:chainnode.com/forum/333

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章