微服務分散式事務Saga框架

banq發表於2018-02-06
Eventuate Tram Saga框架是使用JDBC / JPA的Java微服務的Saga框架。

微服務架構遇到的主要挑戰是維護跨服務的資料一致性。每項微服務都有自己的私有資料,不能使用傳統的分散式事務(JTA/Raft等兩段提交PC),這種情況下解決方案是使用Saga。

Saga是這樣跨多個微服務的維持資料一致性的:使用使用訊息或事件協調串起一個個本地交易。一個Saga由一系列的步驟組成,每一步都包括事務,事務補償或兩者兼而有之。每個事務都是使用命令訊息(Command message)來呼叫Saga參與者。一個Saga會依次以向前順序執行各個事務步驟。如果其中一個步驟失敗了,那麼Saga就執行補償事務以相反的順序來實現回滾。

Eventuate Tram Saga在作者書籍“Microservice Patterns”中有更詳細的描述。它建立在Eventuate Tram框架上,它使應用程式不使用JTA情況下能夠原子地更新資料庫併發布訊息。

GitHub - eventuate-tram/eventuate-tram-sagas: Saga

相關文章