您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何進行Pulsar Functions 的深入分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Pulsar Functions 簡單介紹
大概運行過程就是在 input topic 中接收消息,進入 functions 中進行運算和消息處理,最后輸出到 output topic 中的過程。
Pulsar Functions 可以覆蓋 90% 以上情況的流處理場景。比如:消息過濾、消息路由、消息增強等。更多使用場景可以參考之前發布的技術博客:基于 Pulsar Functions 的事件處理設計模式
Pulsar Functions 主要分為三大模塊:Instance、Runtime、Function-worker。
在 Runtime 層面主要支持三種形式:thread、process 和外部支持的 Kubernetes。
更多關于 Pulsar Functions 介紹和基礎層源碼講解,可以參考回放視頻:01:00-13:20 時間段。
此分享的解析角度,從 functions 內部幾個重要節點出發。主要是:如何提交 Pulsar Functions、Functions Worker 如何調度以及如何運行 Pulsar Functions。
在執行/創建一個 function 時,需要通過 `FunctionConfig` 的形式暴露給用戶,用戶通過指定 `FunctionConfig` 來進行 functions 內部操作。
Functions 可以提交到任意 worker,通過相應的 Json 文件進行相應 tenant/namespace/name 等輸入/輸出配置的提供。
在配置構建完成后,會有一個 AuthN/AuthZ checks 過程,去檢測在配置 function 過程中是否添加了與「加密」相關的設置。之后便會對 `FunctionConfig` 文件內格式以及其他方面進行再次核實。
最終這些 jar 包會存儲在 BookKeeper 端,方便后續再次調用。
此時完成以上操作后,submission workflow 會把所有的 functions 提交到 MetaData Topic,并用 map from <FQFN, FunctionMetaData> 格式進行記錄。
FQFN 就是 Fully Qualified Function Name,格式就是 tenant、namespace、functions name 三個字段拼合而成。
FQFN 作為存儲元數據的 key,會把用戶提供的 `FunctionConfig` 字段填充到 Function MetaData 中。圖中的 MetaData Topic Tailer,主要目的是進行實時監測 MetaData Topic,根據實時更新變化寫入等動態,進行后續操作。
在 Functions 內部沒有真正開始執行「創建/更新/刪除」等操作之前,需要進行狀態更新。大體過程為:
復制當前狀態
進行狀態合并更新
增加當前版本數
將數據寫入 MetaData Topic
Tailer 進行數據讀取和驗證
如果沒有沖突,則整個更新
|| Scheduling workflow
CRUD 操作:創建/更新/刪除
Worker 變動:如創建新 worker、leadership 發生變化等
|| Execution Workflow
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。