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