系統架構概觀

系統概觀圖示

arc system diagram

CannerFlow 主要分成四個子系統 (模塊),分別是 SQL Engine, Web Service, Object StorageSSO Service

  1. SQL Engine: 實際做 SQL 運算的分散式系統,分成 coordinator 及 worker,coordinator 負責解析 SQL 語句,切割成 tasks 後,分派給不同的 worker 處理.
  2. Web Service: 負責 render 畫面給 browser,提供 restful API 給 client 使用.
  3. Object Storage: 儲存外部上傳檔案及 CannerFlow 中 Query 的結果及 Materialized View 的資料.若使用 CannerFlow 雲端版本,此 Storage 將會使用雲端提供之服務,AWS 環境使用 S3,Azure 環境使用 Azure Blob.
  4. SSO Service: 負責處理登入/使用者驗證/權限管理 等功能.

SQL Query 實際執行流程圖示

arc sql process

上圖展示實際執行 Query 時,子系統 (模塊) 間是如何溝通/傳遞資料的:

  1. Create Query: 從最右側開始,由 Client/BI 發起 SQL Query 的請求,至 Authentication Layer (SSO Service) 做權限檢查,確認此請求的身份及權限允許後,至 Web Service 做 Log / Auditing 等追蹤所需的紀錄,接著到 SQL Engine ,開始執行此 SQL Query
  2. Execute Query: SQL Engine 中的 Coordinator 把 SQL 語句解析後,分成多個 Tasks,並分派給多個 Worker 處理.
  3. Cache Result: SQL Engine 會透過內部的 Connector 至不同資料來源取得資料,Stream 到內部 Worker 組成的 pipeline 做運算,並把結果 Stream 到 Object Storage 中做 Cache.
  4. Get Result: Client/BI 從 Web Service 取得 Object Storage 中運算結果的位址 (位址接透過 Signed 處理,無法直接訪問,確保存取上的安全),Client/BI 從 Object Storage 的位址取得結果.