AI 事件驅動場景 Serverless 實踐

一、事件驅動框架:Knative Eventing

事件驅動是指事件在持續事務管理過程中,進行決策的一種策略。可以通過調動可用資源執行相關任務,從而解決不斷出現的問題。通俗地說是當用戶觸發使用行爲時對用戶行爲的響應。在 Serverless 場景下,事件驅動完美符合其設計初衷之一:按需付費。

1. Knative 模型

圖:Knative 模型

Knative 主要包括兩大部分:一是用於工作負載的 Serving,包括版本管理、灰度流量、自動彈性;二是 Eventing(事件驅動框架)。

  • 核心玩家Google;IBM;Pivotal;RedHat;SAP。
  • 友商相關產品Google CloudRun;IBM;Pivotal Function Service(PFC);OpenShift。

2. 事件驅動框架:Eventing

Knative 的 Eventing 提供了一個完整的事件模型,方便接入各個外部系統的事件。事件接入以後,通過 Cloud Event 標準在內部流轉,結合 Broker-Trigger 模型進行事件處理。

從上圖可以看到,Eventing 中包含三部分內容:

  • 事件源
  • Broker-Trigger:事件驅動模型,這個模型在早期 16 年的版本開始出現,其原理是 Trigger 訂閱 Broker 信息並過濾,最後將事件發送到對應的服務進行消費。
  • 消息系統:在 Eventing 中每個 Broker 下面對應一個消息的系統,來承載對事件的整個流轉。目前社區支持的消息系統包括 Kafka、NATS、Rocket MQ、Rabbit MQ 等。

3. 關鍵特性:事件規則

事件規則的核心是 Broker-Trigger 模型,它包含以下特性:

  • Trigger 的 filter 的作用是對 Event 進行內容過濾;
  • 支持對 Event 的 Attribute 以及 Data 的內容進行過濾;
  • 支持 Common Expression Language(CEL)表達式過濾;
  • 支持通過 SourceAndType(事件源類型)進行過濾。

二、事件驅動引擎-事件源

1. 事件源介紹

Knative 社區中提供了豐富的事件源接入,包括 Kafka、Github,也支持接入消息雲產品的一些事件,比如 MNS、RocketMQ 等。

如上圖所示,接入事件源之後,可以通過 Broker-Trigger 模型請求相應的服務。這些服務包括一些具體場景,比如從源碼構建鏡像、自動化鏡像發佈、AI 音視頻處理、定時任務等。所有的事件都需要這樣的事件源來拉取,然後下發到 Eventing 整個事件流轉過程。

  • 事件接入接入消息雲產品事件源;通過 MNS 接入更多雲產品的事件。
  • 事件處理Knative Eventing 內部實現事件的訂閱、過濾和路由機制;事件最終通過 Knative 管理的 Serverless 服務進行消費。
  • 典型案例AI 音視頻處理;代碼提交自動構建鏡像。

2. RocketMQ 事件源

消息隊列 RocketMQ 版是阿里雲基於 Apache RocketMQ 構建的低延遲、高併發、高可用、高可靠的分佈式消息中間件。

消息隊列 RocketMQ 版既可爲分佈式應用系統提供異步解耦和削峯填谷的能力,同時也具備互聯網應用所需的海量消息堆積、高吞吐、可靠重試等特性。

RocketMQSource 是 Knative 平臺的 RocketMQ 事件源。其可以將 RocketMQ 集羣的消息以 Cloud Event 的格式實時轉發到 Knative 平臺,是 Apahe RocketMQ 和 Knative 之間的連接器。

3. Kafka 事件源

消息隊列 Kafka 版是阿里雲基於 Apache Kafka 構建的高吞吐量、高可擴展性的分佈式消息隊列服務,廣泛用於日誌收集、監控數據聚合、流式數據處理、在線和離線分析等,是大數據生態中不可或缺的產品之一,阿里雲提供全託管服務,用戶無需部署運維,更專業、更可靠、更安全。

三、AI 事件驅動場景實踐

以具體場景爲例,該案例是一個直播系統,系統每天都有海量的直播訪問,訪問量根據直播熱度隨時變化,彈性有波動,同時存在不定時的增量。客戶的訴求,一是業務彈性波動,消息併發性比較高;二是互動實時響應,要求低延遲。

爲了滿足對消息處理的彈性波動、高併發及低延遲的要求,客戶選擇阿里雲的 Knative 服務進行數據的彈性處理。阿里雲 Knative 完全契合了用戶當前的訴求,並且在接入 K8s 標準之上,提供了基於事件和消息的彈性調度。

當應用實例數隨着業務的波峯波谷進行擴容和縮容時,真正做到了按需使用、實時彈性的能力。整個過程完全自動化,減少業務開發人員在基礎設施上的負擔。在這個案例中,Knative 主要提供了三個能力:極致彈性、事件處理、開箱即用。

下面進行示例演示,演示內容主要有:

  • 部署 Kafka 事件源
  • 部署事件網關
  • 部署服務
  • 模擬事件處理

作者簡介:
李鵬,花名:元毅,阿里雲容器平臺高級開發工程師,2016 年加入阿里, 深度參與了阿里巴巴全面容器化、連續多年支持雙十一容器化鏈路。專注於容器、Kubernetes、Service Mesh 和 Serverless 等雲原生領域,致力於構建新一代 Serverless 平臺。當前負責阿里雲容器服務 Knative 相關工作。

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

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