Spring Cloud微服務系統下的數據一致性探討


我想這個問題需要根據自己的系統具體架構來分別討論,這邊拿一個車聯網的系統舉例。

拆除GPS這個功能接口需要分幾個步驟實現(不涉及數據更新的步驟略去了):

①更改GPS設備狀態(設備管理服務)

②更改工單狀態(工單管理服務)

假設調用拆除GPS這個接口的時候,由於各種原因②不能工作了。

架構1:普通的微服務架構

工單管理服務要調用設備管理服務的功能,用的是spring cloud的自己的restTemplate,這個很簡單,加上普通的事務就可以了。

架構2:引入了消息中間件

這個時候,服務之間調用加了一層消息中間件(以activemq為例),這也沒關系,activemq有消息確認機制ACK,可以指定ACK_MODE為SESSION_TRANSACTED=0進行事務提交

,然后再配合原來的數據庫事務,也可以實現。並且activemq還有失敗重發機制,可以嘗試N次重發失敗之后再回滾。

架構3:用到了分庫

那就涉及到多數據源了,這方面spring也可以集成atomiko實現分布式事務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM