天天看點

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

作者 | 李鵬(元毅)

來源 |

Serverless 公衆号

一、事件驅動架構:Knative Eventing

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

1. Knative 模型

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

圖:Knative 模型

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

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

2. 事件驅動架構:Eventing

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

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

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

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

3. 關鍵特性:事件規則

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

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

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

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

1. 事件源介紹

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

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

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

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

2. RocketMQ 事件源

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

消息隊列 RocketMQ 版是阿裡雲基于 Apache RocketMQ 建構的低延遲、高并發、高可用、高可靠的分布式消息中間件。

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

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

3. Kafka 事件源

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

消息隊列 Kafka 版是阿裡雲基于 Apache Kafka 建構的高吞吐量、高可擴充性的分布式消息隊列服務,廣泛用于日志收集、監控資料聚合、流式資料處理、線上和離線分析等,是大資料生态中不可或缺的産品之一,阿裡雲提供全托管服務,使用者無需部署運維,更專業、更可靠、更安全。

三、AI 事件驅動場景實踐

AI 事件驅動場景 Serverless 實踐一、事件驅動架構:Knative Eventing二、事件驅動引擎-事件源三、AI 事件驅動場景實踐

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

為了滿足對消息處理的彈性波動、高并發及低延遲的要求,客戶選擇阿裡雲的 Knative 服務進行資料的彈性處理。阿裡雲 Knative 完全契合了使用者目前的訴求,并且在接入 K8s 标準之上,提供了基于事件和消息的彈性排程。

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

下面進行示例示範,示範内容主要有:

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

示範過程觀看連結:

https://developer.aliyun.com/live/246128

作者簡介:

李鵬,花名:元毅,阿裡雲容器平台進階開發工程師,2016 年加入阿裡, 深度參與了阿裡巴巴全面容器化、連續多年支援雙十一容器化鍊路。專注于容器、Kubernetes、Service Mesh 和 Serverless 等雲原生領域,緻力于建構新一代 Serverless 平台。目前負責阿裡雲容器服務 Knative 相關工作。

繼續閱讀