跳到主要內容

Exchange 服務的工作流程及其與 OCAP 服務的整合

Lei Zhou (Software Engineer at ArcBlock)
ArcBlockOCAP

「光有善意永遠無法奏效,你需要良好的機制才能讓事情真正發生。」 傑夫・貝佐斯如此說道。

Exchange 服務的工作流程及其與 OCAP 服務的整合

作者 Lei Zhou(ArcBlock 軟體工程師)

今年,我很幸運能以軟體工程師的身分加入 ArcBlock。參與 OCAP 服務是最令人興奮的工作經歷之一。OCAP 服務正在推出一些新功能,目標是讓服務更有效率、更強大。今年 7 月,OCAP 與 OCAP Playground 推出了由 Exchange 服務支援的即時幣價功能,用於收集多種加密貨幣的即時價格,並提供給其他服務。今天,我們將完整介紹 Exchange 服務的工作流程,以及它與 OCAP 服務的整合方式。

架構是什麼?

Exchange 服務是一個用於收集、解析及儲存加密貨幣資料的 Elixir 應用程式。從 ArcBlock 創立的第一天起,Elixir 就一直是我們的「一級」程式語言。這項服務分為四個部分:交易所 API 模組、Scheduler、Publisher 與 Filesystem。

交易所 API 模組

目前,我們從 6 家交易所收集加密貨幣資料,而這些交易所各自採用不同的介面與資料結構。為了處理這種情況,我們設置了 6 個交易所 API 模組,用來取得並格式化來自交易所的加密貨幣資料,每個模組專門負責一家交易所。資料經過這些模組處理後,解析資料的格式便會統一。

Scheduler

目前,我們正從交易所取得 BTC 與 ETH 的即時幣價。持續流入的這些資料是 Exchange 服務的輸入。系統中有一個 Scheduler,會定期觸發 Publisher,從交易所收集新資料。如果你想執行週期性任務,有一些函式庫可以讓工作變得更容易(但它們本身在底層仍使用 GenServer!),例如 Quantum。Exchange 服務採用 Quantum,也就是一個類似 cron 的 Elixir 工作排程器。

Publisher

我們使用 Phoenix PubSub 廣播訊息,並使用 GenServer 處理事件。GenServer 是 OTP 的核心元件,能簡化重複性任務,讓程式設計師專注於應用程式邏輯。在 Elixir 與 Erlang 的世界中,GenServer 被廣泛用來將介面邏輯(例如網頁伺服器、終端機讀寫器或 GUI)與業務邏輯分離。

Pub/Sub 部分背後的概念相當簡單:啟動個別程序(交易所 API 模組),等待這些模組傳回解析後的加密貨幣資料,接著彙整 6 個交易所 API 模組的資料,並將資料廣播至 Filesystem 與 Amazon Kinesis。

Amazon Kinesis 讓即時串流資料的收集、處理與分析變得容易,因此我們可以及時獲得洞察,並透過 Exchange 服務提供資料,而不必等到所有資料收集完畢後才開始處理。

Filesystem 與 LKG

Publisher 將資料廣播至 Filesystem,後者會同步至 Amazon S3。Amazon S3 是檔案儲存服務,可協助我們進行備份、封存與復原。

當交易所 API 請求發生錯誤等問題時,Last Known Good 是一種有效的問題復原方案,可用來保存每家交易所最近一次的有效資料。

為什麼要監控與分析服務?

我們使用 Datadog 建立即時互動式儀表板,並傳送指標與事件,以便進行處理與繪圖。

在服務層級,監控與評估的目的是有系統地追蹤實作與產出,並衡量服務的成效。它有助於準確判斷新版本何時部署,以及何時可能需要進行變更。監控與評估是修改服務的基礎,讓我們能夠做出有充分資訊支持的決策。

在指標方面,我使用 Statix 收集統計資料與一些自訂指標,再將它們傳送至 StatsD,並從那裡送往 Datadog,以便進行視覺化。

如何整合至 OCAP 服務?

我們的 OCAP 服務使用 GraphQL。使用 GraphQL 時,不需要進行版本管理,因為我們可以輕鬆地在 GraphQL API 中新增欄位與型別,而不會影響現有查詢,從而提供無版本 API。我新增了一個排程工作,定期從 Amazon Kinesis 取得最新的加密貨幣資料,也新增了一個解析器,可為相關欄位提供即時價格。

進一步瞭解 ArcBlock Exchange 服務

希望你喜歡這次對 Exchange 服務運作方式及其與 OCAP 服務整合方式的介紹。Exchange 服務即將支援更多加密貨幣。

如果你想加入一個高績效的工程組織,就來加入 ArcBlock 吧!

本頁涉及

產品

  • OCAP active

    一個用統一介面查詢鏈上資料的協定,不必每條鏈配一個客戶端。ArcBlock 持有相關專利。