Leo Yeh's Blog

SAS Viya (85)

教學目標

初步了解 SAS Event Stream Processing 的基本概念。

重點概念

首先最近幾年企業開始進行數位轉型,其主要會在公有雲和私有雲中無縫管理和部署軟體,此時我們就能夠在雲端平台上採用 SAS Event Stream Processing 搭配機器學習分析將能夠達到物聯網產業的即時串流分析應用。而 SAS Viya 平台主要能夠利用基於雲端技術和 DevOps 框架,我們主要能夠透過 Kubernetes 平台的管理功能立即部署 SAS Event Stream Processing 容器的高可用性架構、故障轉移功能和零停機更新,以利縮短了產品上市時間,降低了關鍵任務的總體成本,同時提供企業級的彈性架構擴展。此外當我們要部署 SAS Event Stream Processing 容器的高可用性架構,此時我們就會需要先建置 Dockerfile 其中我們將會使用 Ansible Container 來建立自定義的容器 Docker 映像檔,像是我們使用增加 Kafka 訊息匯總整合所需要的函式庫,此過程的輸出主要是儲存在容器註冊表中的 Docker 映像檔,而當 Docker 映像檔在註冊表中註冊之後,我們就能夠透過 Kubernetes 部署容器至多個環境中,像是開發、測試和正式環境。

接著 SAS Event Stream Processing 主要是一種機時分析引擎,其能夠處理記憶體中的串流資料進行分析,並且理解每秒數百萬個事件,以及檢測出感興趣的模式,從技術角度來看 SAS Event Stream Processing 主要是一個可以執行的輕量級應用程式,至於 SAS Event Stream Processing 使用案例差異很大,像是針對物聯網進行智慧設備和車輛中的傳感器分析、製造業中連接工業傳感器設備以測量門檻值警報、零售業分析來自文字分析和點擊串流資料收集、… 等。至於 SAS Event Stream Processing 技術本身由五個關鍵元件所組成,分別為:

  1. ESP 引擎 (ESP Engine):作為執行 ESP 專案容器的伺服器程序。
  2. ESP 專案 (ESP Project):執行一個或多個連續針對事件串流資料進行操作的查詢邏輯。
  3. 連續查詢 (Continuous Query):針對對連續執行的資料串流查詢,實現對於資料分析的操作。
  4. 輸入適配器和連接器 (Input adapters and connectors):輸入連接器和適配器主要用於發布和訂閱 API 與各種介面,客戶端,驅動程式進行通訊。
  5. ESP 視窗 (ESP Windows):連續查詢包含一個或多個資料來源視窗和一個或更多衍生的視窗,視窗主要由邊進行連接,邊有關聯方向取決於資料是流入還是流出 ESP 服務。

再來 SAS Event Stream Processing 與 Kafka Message Bus 進行整合,主要是透過 SAS ESP Kafka 連接器提供的發布和訂閱 API 連接器,並且用於 Kafka 執行時提供函式庫支援,請注意這必須包含在 SAS Event Stream Processing 容器映像檔中,此外我們還必須包括 ZooKeeper 函式庫包含在 SAS Event Stream Processing 容器映像檔中,兩者差別在於 Kafka 函式庫主要提供 SAS ESP 連接器和 Kafka 之間的整合層,至於 ZooKeeper 函式庫將能夠使 SAS Event Stream Processing 伺服器監視彼此的存在,以利進行故障移轉,此外 1 + N 的故障轉移模型是經過驗證的架構模式,在這種情況下,我們使用三個SAS Event Stream Processing 實體來構建一個叢集 1 + N 模式,此設定相對於雙實體群集的好處是三個實體當在一個實體發生故障時阻止單點故障,此時必須要透過 ZooKeeper 函式庫來進行協調 Kafka 和 SAS Event Stream Processing 之間的互動,這對於 1 + N 故障移轉模型非常重要,同時故障移轉過程所有的 SAS 實體將會使用記憶體同步整個叢集的 Event Stream Processing,以利當主要活動節點發生問題時,其中一個備用節點將獲得活動,同時無縫地繼續處理串流資料。

最後我們主要使用 SAS Viya Container Recipes GitHub 專案來建立 SAS Event Stream Processing 的 Docker 映像檔,其中包括使用 SAS Event Stream Processing 連接器和適配器連接所需的 Kafka 函式庫,同時還必須設定容器對應的共享儲存空,以利我們共享 SAS Event Stream Processing 記憶體的快照,這將有利於更快在恢復 ESP 引擎期間內啟動,並且提供對齊多個引擎在不同的 Kubernetes Pod 上的執行,當 SAS Event Stream Processing 容器在啟動將會執行以下步驟,分別為:

  1. 如果恢復點可用,請從共享儲存空間進行載入。
  2. 如果恢復點不可用,請載入專案而不進行恢復。
  3. 執行 SAS Event Stream Processing 專案。

至於 SAS Event Stream Processing 是如何進行故障轉移的詳細步驟,請參考相關論文

相關資源

⬅️ Go back