本文主要想談一談工作流在微服務系統中的使用以及工作流能夠為微服務系統帶來的好處。
通過查詢資料可得,微服務的編排主要分為兩種形式,一種是「choreography」,有人將其翻譯成微服務的編排;另一種是「orchestration」,有人將其翻譯成微服務的編制。兩者的差異很簡單,前者是點對點互動,沒有乙個中心流程來協同各服務的互動(服務註冊不考慮在內),例如,現在的rest-api呼叫,dubbo框架、hsf框架都是基於此種設計模式;後者是基於總控系統,通過總控系統協調各服務的互動,例如,例如事件匯流排,訊息佇列等。其具體結構如圖1.1所示。
目前而言,"編排"風格的微服務架構設計有如下缺點:
(1)"編排"使得乙個業務流程分散到多個微服務中,這樣使得整個流程不可見。
(2)由於"編排"的點對點特性,使得兩端的服務強耦合,因而很難適應需求的變化。
可是,基於「編制」架構風格的設計也並非銀彈。雖然基於事件通知可以降低服務之間的耦合,並且處理起來非常簡單。但是,基於訊息命令,不易獲命令背後的業務邏輯,因此這種方式也不易察覺出業務的流程。
那麼,該如何有效的察覺出業務的流程呢?我想,可以使用基於「編制」風格的微服務+工作流。
基於「編制」風格的事件流程處理如圖1.2所示:
圖 1.2 基於「編制」風格的購買商品業務流程
我們將上述購買商品的業務流程構建成為工作流中的bpmn模型,具體如圖1.3所示:
通過在微服務編排中引入工作流引擎,通過工作流對分散於各微服務中的業務進行總體的控制,可得如下好處:
(1)可見性。通過視覺化方式使不易確定的業務流程變得清晰可見
(2)狀態處理。由於工作流能夠儲存每個具體流程的狀態,因此乙個訂單可以對應於乙個流程例項
(3)狀態的透明化和視覺化處理。通過視覺化方式檢視或者變更某一流程例項的狀態。例如,將某一訂單回退到上乙個環節。
接下來的工作:
(1)實驗論證其觀點
(2)細化每一階段目標
工作流建模 工作流概念
工作流建模 工作流概念 1 案例 工作流系統得基本目的是處理案例。每個案例都有乙個唯一標識,而且每個案例的生命週期都是有限的。案例生命週期都處於某個特定狀態,該狀態由三個元素組成 1 案例相關的屬性的值 案例屬性是一系列同案例相關的變數。能夠用來管理案例。正是通過這些變數,才有可能指出在特定條件下某...
從微服務遷移到工作流的經驗之談
jet公司的訂單管理系統 oms 負責處理很多業務功能,最初是由一系列微服務組成的。隨著公司的發展,這種架構所面臨的挑戰也越來越大,直到他們決定構建乙個新的基於工作流的平台。jet工程師james novino在一篇博文中介紹了舊系統面臨的挑戰 對新平台的概述以及新平台執行一年多後所總結的經驗。om...
從微服務遷移到工作流的經驗之談
jet公司的訂單管理系統 oms 負責處理很多業務功能,最初是由一系列微服務組成的。隨著公司的發展,這種架構所面臨的挑戰也越來越大,直到他們決定構建乙個新的基於工作流的平台。jet工程師james novino在一篇博文中介紹了舊系統面臨的挑戰 對新平台的概述以及新平台執行一年多後所總結的經驗。om...