阿里云國際站經(jīng)銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優(yōu)惠大,聯(lián)系客服飛機@jkkddd
使用MNS服務集成及回調(diào)編排任意任務類型
Serverless工作流的服務集成功能可以簡化用戶與云服務的交互。本文示例中,我們使用MNS隊列集成的功能,結(jié)合回調(diào)(callback)完成更多非函數(shù)計算的計算任務的編排。
簡介
Serverless工作流的使用場景不僅限于編排函數(shù)計算FC(Function Compute)的FaaS函數(shù),也包括廣義上任意的計算任務。在上一篇最佳實踐文檔異步任務回調(diào)中介紹了利用函數(shù)計算的函數(shù)向MNS隊列中發(fā)送消息,自定義環(huán)境中的任務執(zhí)行者 (worker) 接收到消息,結(jié)合回調(diào)(callback)通知Serverless工作流任務執(zhí)行結(jié)果。在下文中,將介紹如何使用Serverless工作流的新功能MNS隊列。MNS隊列進一步簡化編排自定義任務類型。Serverless工作流可以直接向MNS的隊列發(fā)送消息,省去了發(fā)送消息的函數(shù)計算的函數(shù)的開發(fā)、測試和維護,提高了可用性,降低了延遲。使用MNS集成相比通過函數(shù)計算的函數(shù)發(fā)送消息到MNS的做法有以下好處:
無需為發(fā)送消息做函數(shù)計算的函數(shù)的開發(fā),降低了開發(fā)、測試和維護成本。
降低了消息傳遞的延時、少了一次遠程訪問、避免了函數(shù)計算的冷啟動。
去除了一個服務依賴、提高了容錯性。
Serverless工作流未來會推出更多的云服務集成,讓不同類型任務組成的工作流編排變得更加容易。
服務集成功能
下圖中3個串行的任務由Serverless工作流負責依次發(fā)送至用戶指定的MNS隊列中。消息發(fā)送成功之后Serverless工作流將會在該步驟暫定等待回調(diào)。用戶在自定義環(huán)境中的worker(例如ECS VM、容器、自建機房內(nèi)的機器)調(diào)用MNS ReceiveMessage接口拉取消息。收到消息后,worker根據(jù)消息內(nèi)容執(zhí)行相應的任務。任務結(jié)束后,調(diào)用Serverless工作流ReportTaskSucceeded/Failed接口,Serverless工作流收到任務結(jié)果后繼續(xù)該步驟執(zhí)行。worker在匯報任務結(jié)果成功后刪除MNS隊列消息。
步驟詳解
下文將詳細介紹使用該功能的步驟。
準備工作
填寫流程(Flow)
編寫worker
執(zhí)行并查看結(jié)果
步驟一:準備工作
通過MNS控制臺創(chuàng)建MNS隊列,詳細步驟請參見創(chuàng)建隊列。
Serverless工作流需要扮演用戶在Flow中指定的執(zhí)行角色 (RAM role)向用戶賬號下的MNS隊列發(fā)送消息,因此需要為該RAM role添加MNS SendMessage相關(guān)的權(quán)限策略 (policy),細粒度的策略示例如下。如沒有細粒度權(quán)限控制的需求,可以通過Serverless工作流控制臺向Flow RAM role添加系統(tǒng)策略AliyunMNSFullAccess。
步驟二:編寫流程 (Flow)
下面的FDL是一個可以向fnf-demo這個MNS隊列發(fā)送消息并且等待回調(diào)的任務(Task)步驟。
步驟三:編寫worker
下面的Python 2.7代碼模擬一個執(zhí)行任務的worker,它可以運行在任何可以訪問到Serverless工作流和MNS服務的環(huán)境中。該worker長輪詢調(diào)用MNS ReceiveMessage,當一個帶有MNS配置的任務步驟進入時,Serverless工作流會向fnf-demo這個隊列中發(fā)送一個消息。該worker執(zhí)行相應任務結(jié)束后回調(diào)(callback)Serverless工作流ReportTaskSucceeded/Failed接口,在任務結(jié)果匯報完成后Serverless工作流會繼續(xù)當前任務步驟執(zhí)行,worker可以刪除消息。
在虛擬環(huán)境中,安裝fnf、mns、Python SDK
心靈雞湯:
標題:阿里云免實名注冊,阿里云服務器購買,免費注冊
地址:http://m.nickbaillie.com/kfxw/64270.html