亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Pulsar Functions 的深入分析

發布時間:2022-01-04 10:46:20 來源:億速云 閱讀:170 作者:柒染 欄目:大數據

今天就跟大家聊聊有關如何進行Pulsar Functions 的深入分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Pulsar Functions 簡單介紹

Pulsar Functions 是一個輕量級的計算框架,其主要目的是為了提供一個部署簡單、運維簡單的平臺,主要突出“簡單”使用的特點。

大概運行過程就是在 input topic 中接收消息,進入 functions 中進行運算和消息處理,最后輸出到 output topic 中的過程。

如何進行Pulsar Functions 的深入分析

Pulsar Functions 可以覆蓋 90% 以上情況的流處理場景。比如:消息過濾、消息路由、消息增強等。更多使用場景可以參考之前發布的技術博客:基于 Pulsar Functions 的事件處理設計模式

Pulsar Functions 主要分為三大模塊:Instance、Runtime、Function-worker。

在 Runtime 層面主要支持三種形式:thread、process 和外部支持的 Kubernetes。

更多關于 Pulsar Functions 介紹和基礎層源碼講解,可以參考回放視頻:01:00-13:20 時間段。



深入了解 Functions


此分享的解析角度,從 functions 內部幾個重要節點出發。主要是:如何提交 Pulsar Functions、Functions Worker 如何調度以及如何運行 Pulsar Functions。

|| Submission Workflow

在執行/創建一個 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 三個字段拼合而成。

如何進行Pulsar Functions 的深入分析

FQFN 作為存儲元數據的 key,會把用戶提供的 `FunctionConfig` 字段填充到 Function MetaData 中。圖中的 MetaData Topic Tailer,主要目的是進行實時監測 MetaData Topic,根據實時更新變化寫入等動態,進行后續操作。

在 Functions 內部沒有真正開始執行「創建/更新/刪除」等操作之前,需要進行狀態更新。大體過程為:

如何進行Pulsar Functions 的深入分析

  • 復制當前狀態

  • 進行狀態合并更新

  • 增加當前版本數

  • 將數據寫入 MetaData Topic

  • Tailer 進行數據讀取和驗證

  • 如果沒有沖突,則整個更新


上面的整個流程是在單臺 function worker 的情況下,但是在多臺 function worker 中就有可能會出現沖突

在多個 function worker 運行的場景下,當對某一個 function 進行并發更新時,會出現沖突的情況。  當出現沖突時,其解決方式是使用 First Writer Win 的策略,即當第一個請求被成功接收之后,其它請求將會被拒絕。  

經過以上過程的處理,我們可以看出在 submission workflow 過程中,functions 有優點也有缺點。比如可以提交到任意 worker、有固定的狀態機。當然無限的數據增長卻沒有配置相關壓縮數據的一些操作,著實有一丟丟可惜。

更多關于提交 Functions 的操作介紹,可以參考回放視頻 13:30-37:00 時間段。

|| Scheduling workflow

當 function worker 有了上述元數據信息后,那么接下來將如何去調度整個流程呢?

Function worker 的整個調度過程都在    `IScheduler Interface`   接口中執行。

如何進行Pulsar Functions 的深入分析


同時 Function worker 會在以下狀態時開啟「調度模式」。

  • CRUD 操作:創建/更新/刪除

  • Worker 變動:如創建新 worker、leadership 發生變化等


雖然 function 可以提交到任意 worker 中,但是調度過程卻只能在具有「leader」屬性的 worker 中進行。

如何進行Pulsar Functions 的深入分析


那么如何確認「誰是老板」呢?

在以前直播中我們也有專門講過 Pulsar 消息的訂閱模式,其中有一個是 Failover 模式。這里 Pulsar Functions 也借用了此模式。

當所有 worker 進入時,會去以 failover 模式訂閱「Coordination Topic」。按照 failover 的規則,同一時間只會有一個活躍的「小朋友」成為「老板」。所以以此類推,上圖的 worker2 也就成為了那一時間段的 leader。

有了 Leader Worker 后,就需要它進行數據的寫入,將其寫入到 Assignment Topic 中,用來記錄調度信息。

如何進行Pulsar Functions 的深入分析

更多關于調度流程的講解,可以參考回放視頻 37:00-45:00 時間段。

|| Execution Workflow

那么提交并調度完成后,整個 Functions 是如何運行起來的呢?

如何進行Pulsar Functions 的深入分析


在上圖中,Assignment Tailer 監聽到 Topic 中的變化,此時就會將此動作變化傳遞給 Function RunTime Manager。同時借由 Spawner 進行一些列后續操作。

Spawner 是使用 Functions 時的一個抽象執行環境,也具有 Functions 生命周期管理的功能,同時通過 GRPC 通過進行與 Functions 的數據交互。

Future Work
未來關于 Pulsar Functions 的后續更新和產品方向,一個是會在現有功能上進行進一步的完善和改進,比如前邊提到的 Function MetaData Topic 數據無限增長的情況,那么后續是否給其研發一個可壓縮的功能;還有就是動態 RunTime selection 的擴充模式等。

另一個就是繼續擴展出 Pulsar Functions 的其他新功能,如正在開發中的 Function Mesh。可以期待一下哦!

Q&A 
Q:Pulsar functions 可以直接從第三方 key-value database 中讀取數據,處理完后再將結果寫入key-value database 嗎?還是只能通過 Pulsar IO 先寫入 Pulsar topic,Pulsar Functions 再從該 topic 讀取數據做處理?
A:Pulsar Functions 是不支持的,可以借助 Pulsar IO 的功能去實現。就是按照問題后部分描述的方式進行。
看完上述內容,你們對如何進行Pulsar Functions 的深入分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

稻城县| 南乐县| 乌拉特中旗| 长海县| 龙井市| 垣曲县| 吴旗县| 景洪市| 新巴尔虎右旗| 慈利县| 乌兰浩特市| 全南县| 温宿县| 交口县| 凭祥市| 昭苏县| 油尖旺区| 定远县| 哈尔滨市| 华蓥市| 隆回县| 易门县| 九龙坡区| 托克逊县| 合阳县| 贵定县| 蒲江县| 平邑县| 新巴尔虎右旗| 开平市| 义乌市| 富川| 偃师市| 凉山| 增城市| 巴林右旗| 乌鲁木齐县| 定州市| 郧西县| 固原市| 通许县|