阿里云國際站經銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優惠大,聯系客服飛機@jkkddd

簡介
復雜的業務場景例如電商網站、酒店、航班預定這類涉及訂單管理的應用通常要訪問多個遠程服務,并且對操作事務性語義(即所有步驟全部成功或全部失敗,不存在中間狀態)有較高要求。在流量較小、數據存儲集中的應用中,事務性可以通過關系型數據庫提供的ACID特性滿足。然而在大流量場景下,為了高可用和可擴展性,業務通常選擇向微服務的分布式架構方向演進。在這樣的架構中提供多步驟事務性的保證通常需要引入隊列和數據庫來持久化消息以及展現流程狀態,這類系統的開發和運維會給業務方帶來額外的成本和負擔。而使用Serverless工作流提供長流程分布式事務保證會幫您解決這些問題。
場景描述
假設某應用為其用戶提供預定火車票、航班和酒店的功能,要求三個步驟保證事務性。該功能需要三個遠程調用實現(例如預定火車票需要調用12306接口),如果三個調用都成功則該訂單成功。然而實際上任何一個遠程調用都有可能會失敗,因此該應用需要對不同的失敗場景做出相應的補償邏輯,回退已完成操作。如下圖所示:
如果預定火車票(BuyTrainTicket)成功,而預定航班(ReserveFlight)失敗,則需要取消已經購買的火車票(CancelTrainTicket),并告知您訂單失敗。
如果預定火車票(BuyTrainTicket)和預定航班(ReserveFlight)均成功,但是預訂酒店(ReserveHotel)失敗,則需要取消已經預定的航班(CancelFlight)和火車票(CancelTrainTicket),并告知您訂單失敗。
Serverless工作流實現
下文的示例將FC函數編排成一個Serverless工作流流程從而實現了一個可靠的多步驟長流程,該示例分為3步:
創建FC函數
創建流程
執行并查看結果
步驟1:創建FC函數
本步驟是模擬場景案例中提示的三個操作即預訂火車票、預訂航班及預定酒店。
創建下面的Python2.7的函數,關于創建的詳細步驟,請參見FC文檔,建議命名:
Service: fnf-demo
Function: Operation
Operation函數模擬各操作(例如預定航班、預定酒店)的實現,根據輸入決定該操作執行結果(成功或失敗)。
步驟2:創建流程
使用Serverless工作流控制臺創建下面的流程。
配置流程RAM角色
步驟3:執行并查看結果
在控制臺上對創建好的流程(Flow)開始一個新的執行(Execution)。StartExecution API要求傳入JSON格式的輸入。下面的JSON對象可以模擬每個步驟的成功或失敗(例如"reserve_hotel_result":"fail"代表模擬預定酒店這步失敗)。StartExecution是一個異步API,調用結束后,Serverless工作流會返回一個執行名字用來查詢流程執行狀態。
流程執行開始后,在Serverless工作流控制臺可以查看流程的執行過程和結果。從步驟信息頁簽您可以看到,由于"reserve_hotel_result":"fail"和ReserveHotel函數調用失敗,Serverless工作流按照流程定義,依次取消航班(CancelFlight)、取消火車票(CancelTrainTicket)。Serverless工作流每個步驟轉換有持久化的保證,因此網絡中斷或進程崩潰等失敗場景不會影響流程事務性的保證。
流程執行會產生執行歷史事件(event),這些事件可以通過控制臺、SDK或CLI調用GetExecutionHistory API查詢。
錯誤處理和重試
上面示例中的預定航班、預定酒店等遠程調用都有可能受到網絡或服務錯誤等原因導致調用失敗,而增加對瞬時錯誤的重試可以提高訂單流程成功率。Serverless工作流在任務(Task)類型的步驟(Step)自帶重試功能,如預定酒店這個步驟用下面的寫法可以實現對FC.Unknown類型的錯誤指數退避。假設重試到達最大次數后ReserveHotel都無法成功,按照該步驟中catch的定義,ReserveHotel函數拋出的FC.Unknown錯誤會被捕獲并將跳轉到CancelFlight執行定義好的補償邏輯。
溫馨提示:尊敬的[]站點管理員,將本頁鏈接加入您的網站友情鏈接,下次可以快速來到這里更新您的站點信息哦!每天更新您的[阿里云賬號注冊,阿里云服務器購買,24h自助充值]站點信息,可以排到首頁最前端的位置,讓更多人看到您的網站信息哦。
將以下代碼插入您網頁中,讓網友幫您更新網站每日SEO綜合情況
-
stockholm syndrome衛衣_something special衛衣 -
極客導航 什么是Stockholm Syndrome衛衣? Stockholm Syndrome衛衣是由Something Special品牌推出的一款獨特的衣服。它得名于“斯德哥爾摩綜合征”,這是一種心理學現象,指的是被劫持人質與劫持
-
天津免聯考碩士 -
數碼快印 天津免聯考碩士在職研究生作用有哪些,哪個字都可以被,天津大學在職研究生招生信息網胥老師表示,今年聯考的專業設置跟往年相比,主要在1:3、5下旬,天津大。 因為是聯考的
-
windows優化大師綠色_Windows優化大師綠色版 -
什么是Windows優化大師綠色版? Windows優化大師綠色版是一款專為Windows系統設計的優化工具軟件。它通過清理垃圾文件、優化系統設置和修復系統錯誤等功能,幫助用戶提高電腦性能并提
-
碩士免聯考含金量 -
321不銹鋼板 碩士免聯考含金量一樣,無論在職人員想要繼續在參加在職研究生考試以及培訓上也有一個改變。 因為在職人員參加在職博士考試對于自己工作的幫助并不是很大,所以在市場
-
seo進階培訓(seo實戰培訓中心) -
風水師 seo進階培訓班想要學習SEO技術,其實并沒有那么的簡單,只要是你用心學習,學習的人多了,那么你就可以嘗試的seo了。 SEO基礎知識入門講解: 1、SEO基礎入門書籍,有利于提高PR值 SE
-
二次結構泵-機械化施工省時省力更省心 -
二次結構泵 是一款可以用于室內外 30米進行混凝土構造柱澆筑的神器,機械化施工省時省力更省心,因此備受項目方青睞。 二次結構泵 作為一款施工機械,要想延長耐用壽命,做好機
