系統架構概觀
系統概觀圖示
CannerFlow 主要分成四個子系統 (模塊),分別是 SQL Engine
, Web Service
, Object Storage
及 SSO Service
- SQL Engine: 實際做 SQL 運算的分散式系統,分成 coordinator 及 worker,coordinator 負責解析 SQL 語句,切割成 tasks 後,分派給不同的 worker 處理.
- Web Service: 負責 render 畫面給 browser,提供 restful API 給 client 使用.
- Object Storage: 儲存外部上傳檔案及 CannerFlow 中 Query 的結果及 Materialized View 的資料.若使用 CannerFlow 雲端版本,此 Storage 將會使用雲端提供之服務,AWS 環境使用 S3,Azure 環境使用 Azure Blob.
- SSO Service: 負責處理登入/使用者驗證/權限管理 等功能.
SQL Query 實際執行流程圖示
上圖展示實際執行 Query 時,子系統 (模塊) 間是如何溝通/傳遞資料的:
Create Query
: 從最右側開始,由 Client/BI 發起 SQL Query 的請求,至 Authentication Layer (SSO Service) 做權限檢查,確認此請求的身份及權限允許後,至 Web Service 做 Log / Auditing 等追蹤所需的紀錄,接著到 SQL Engine ,開始執行此 SQL QueryExecute Query
: SQL Engine 中的 Coordinator 把 SQL 語句解析後,分成多個 Tasks,並分派給多個 Worker 處理.Cache Result
: SQL Engine 會透過內部的 Connector 至不同資料來源取得資料,Stream 到內部 Worker 組成的 pipeline 做運算,並把結果 Stream 到Object Storage
中做 Cache.Get Result
: Client/BI 從 Web Service 取得Object Storage
中運算結果的位址 (位址接透過 Signed 處理,無法直接訪問,確保存取上的安全),Client/BI 從Object Storage
的位址取得結果.