日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Saga 模式 | 如何使用微服務實現業務事務

來源: 責編: 時間:2024-01-02 09:31:07 235觀看
導讀最強大的事務類型之一稱為兩階段提交,當第一個事務的提交取決于第二個事務的完成時,它是摘要。特別是當您必須同時更新多個實體時,例如確認訂單和立即更新庫存時,它非常有用。但是,例如,當您使用微服務時,事情變得更加復雜。

最強大的事務類型之一稱為兩階段提交,當第一個事務的提交取決于第二個事務的完成時,它是摘要。特別是當您必須同時更新多個實體時,例如確認訂單和立即更新庫存時,它非常有用。C9z28資訊網——每日最新資訊28at.com

但是,例如,當您使用微服務時,事情變得更加復雜。每個服務都是一個獨立的系統,擁有自己的數據庫,您不再可以利用本地兩階段提交的簡單性來維護整個系統的一致性。C9z28資訊網——每日最新資訊28at.com

當你失去這種能力時,RDBMS成為一個非常糟糕的存儲選擇,因為你可以完成相同的“單實體原子事務”,但只需使用像Couchbase這樣的NoSQL數據庫就可以快幾十倍。這就是為什么大多數使用微服務的公司也在使用NoSQL。C9z28資訊網——每日最新資訊28at.com

要舉例說明此問題,請考慮以下電子商務系統的高級微服務架構:C9z28資訊網——每日最新資訊28at.com

圖片圖片C9z28資訊網——每日最新資訊28at.com

在上面的示例中,人們不能只在一個ACID交易中下訂單,向客戶收費,更新庫存,并將其發送到交貨。要始終如一地執行此整個流程,您將需要創建分布式事務。C9z28資訊網——每日最新資訊28at.com

我們都知道實現分布式任務是多么困難,不幸的是,交易也不例外。處理瞬態狀態,服務,隔離和回滾之間的最終一致性是在設計階段應該考慮的場景。C9z28資訊網——每日最新資訊28at.com

幸運的是,我們已經為它提出了一些好的模式,因為我們已經實施分布式事務已有二十多年了。我今天要談的那個叫做Saga模式。C9z28資訊網——每日最新資訊28at.com

傳奇(Saga)模式

分布式事務最著名的模式之一稱為Saga。關于它的第一篇論文發表于1987年,從那時起它就成了一種流行的解決方案。C9z28資訊網——每日最新資訊28at.com

Saga是一系列本地事務,其中每個事務在單個服務中更新數據。第一個事務由對應于系統操作的外部請求啟動,然后每個后續步驟由前一個完成觸發。C9z28資訊網——每日最新資訊28at.com

使用我們之前的電子商務示例,在一個非常高級的設計中,Saga實現如下所示:C9z28資訊網——每日最新資訊28at.com

圖片圖片C9z28資訊網——每日最新資訊28at.com


C9z28資訊網——每日最新資訊28at.com

有幾種不同的方法來實現傳奇交易,但最受歡迎的兩種方式是:C9z28資訊網——每日最新資訊28at.com

  1. 事件/Choreography(編舞):當沒有中央協調時,每個服務產生并監聽其他服務的事件,并決定是否應該采取行動。
  2. 命令 / Orchestration(編曲):協調器服務負責集中saga的決策和排序業務邏輯。

讓我們更深入地了解每個實現,以了解它們的工作原理。C9z28資訊網——每日最新資訊28at.com

事件/編舞

事件/Choreography(編舞)方法中,第一個服務執行事務然后發布事件。該事件由一個或多個服務監聽,這些服務執行本地事務并發布(或不發布)新事件。C9z28資訊網——每日最新資訊28at.com

當最后一個服務執行其本地事務并且不發布任何事件時,分布式事務結束,或者任何傳奇(Saga)參與者都不會聽到發布的事件。C9z28資訊網——每日最新資訊28at.com

讓我們看看它在我們的電子商務示例中的樣子:C9z28資訊網——每日最新資訊28at.com

圖片圖片C9z28資訊網——每日最新資訊28at.com


C9z28資訊網——每日最新資訊28at.com

  1. 訂單服務保存新訂單,將狀態設置為掛起并發布名為ORDER_CREATED_EVENT的事件。
  2. 付款服務偵聽ORDER_CREATED_EVENT,向客戶收費并發布事件BILLED_ORDER_EVENT。
  3. Stock Service監聽BILLED_ORDER_EVENT,更新庫存,準備訂單中購買的產品并發布ORDER_PREPARED_EVENT。
  4. Delivery Service偵聽ORDER_PREPARED_EVENT,然后選擇并交付產品。最后,它發布了ORDER_DELIVERED_EVENT
  5. 最后,Order Service偵聽ORDER_DELIVERED_EVENT并將訂單狀態設置為已結束。

在上面的情況中,如果需要跟蹤訂單的狀態,訂單服務可以簡單地監聽所有事件并更新其狀態。C9z28資訊網——每日最新資訊28at.com

分布式事務中的回滾

回滾分布式事務并非免費。通常,您必須實施另一個操作/事務來補償之前已完成的操作。C9z28資訊網——每日最新資訊28at.com

假設Stock Service在交易期間失敗了。讓我們看看回滾會是什么樣子:C9z28資訊網——每日最新資訊28at.com

圖片圖片C9z28資訊網——每日最新資訊28at.com


C9z28資訊網——每日最新資訊28at.com

  1. 庫存服務生產PRODUCT_OUT_OF_STOCK_EVENT;
  2. 訂單服務和付款服務都會收聽上一條消息:
  • 付款服務退還客戶。
  • 訂單服務將訂單狀態設置為失敗。

請注意,為每個事務定義一個公共共享ID至關重要,因此每當您拋出一個事件時,所有偵聽器都可以立即知道它所引用的事務。C9z28資訊網——每日最新資訊28at.com

Saga 事件/Choreography(編舞)設計的好處和缺點

事件/編排是實現Saga模式的自然方式;它簡單,易于理解,不需要太多的努力來構建,并且所有參與者都是松散耦合的,因為他們沒有彼此的直接知識。如果您的交易涉及2到4個步驟,那么它可能非常合適。C9z28資訊網——每日最新資訊28at.com

但是,如果您不斷在事務中添加額外的步驟,這種方法很快就會變得混亂,因為很難跟蹤哪些服務監聽哪些事件。此外,它還可能在服務之間添加循環依賴,因為它們必須訂閱彼此的事件。C9z28資訊網——每日最新資訊28at.com

最后,使用這種設計實現測試會很棘手。為了模擬事務行為,您應該運行所有服務。C9z28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-55173-0.htmlSaga 模式 | 如何使用微服務實現業務事務

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 基于Spring Boot,為網絡請求添加唯一日志id

下一篇: 九個技巧讓你的PyTorch模型訓練飛快!

標簽:
  • 熱門焦點
  • 石頭自清潔掃拖機器人G10S評測:多年黑科技集大成之作 懶人終極福音

    科技圈經常能看到一個詞叫“縫合怪”,用來形容那些把好多功能或者外觀結合在一起的產品,通常這樣的詞是貶義詞,但如果真的是產品縫合的好、縫合的實用的話,那它就成了中性詞,今
  • 跑分安卓第一!Redmi K60至尊版8月發布!盧偉冰:目標年度性能之王

    8月5日消息,Redmi K60至尊版將于8月發布,在此前舉行的戰略發布會上,官方該機將搭載搭載天璣9200+處理器,安兔兔V10跑分超177萬分,是目前安卓陣營最高的分數
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就“胡錫進炒股是否知道認真報道”展開討論。有
  • iQOO Neo8 Pro評測:旗艦雙芯加持 最強性能游戲旗艦

    【Techweb評測】去年10月,iQOO推出了一款Neo7手機,該機搭載了聯發科天璣9000+,配備獨顯芯片Pro+,帶來了同價位段最佳的游戲體驗,一經上市便受到了諸多用
  • 上海舉辦人工智能大會活動,建設人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術、新產品、新應用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發展盛典人工
Top 主站蜘蛛池模板: 邹平县| 江陵县| 定兴县| 临西县| 嵊州市| 博乐市| 东山县| 尚义县| 湟源县| 东平县| 双江| 广东省| 娄底市| 兴隆县| 龙南县| 聂荣县| 临澧县| 乐平市| 通化市| 衡山县| 汶川县| 成都市| 彩票| 陇南市| 庆云县| 竹溪县| 永寿县| 句容市| 安溪县| 富平县| 镇原县| 渝北区| 思茅市| 略阳县| 永丰县| 前郭尔| 江阴市| 曲阜市| 长沙市| 闸北区| 沙湾县|