1. 程式人生 > >springcloud 中使用redis以及rabbitMQ實現分散式事務

springcloud 中使用redis以及rabbitMQ實現分散式事務

分散式事務的補償機制,在很多成熟的案例都是使用TCC機制,來實現資源凍結,以及提交,失敗則釋放資源,很多情況下,處理業務的特殊情況需要對不支援事務的redis進行手動的事務補償。
比如,現在人臉識別入庫的服務,演算法識別人臉的服務,這兩個是依賴性比較高的服務,而且存在長事務,如果需要查詢頻繁的操作,就需要把資料放到redis,快取 減輕資料庫的壓力,而發生事務的操作,在方法上即使使用了@Transactional註解只是針對有事務性質的JDBC操作,而redis則需要手動的事務補償,進行異常後處理。
通常的做法是人臉識別的事務先提交,返回事務的結果,然後演算法庫識別事務進行,如果演算法事務出了異常,就回滾操作,而人臉識別的事務再做事務的回滾,做到的是最終一致性


即使後面使用rabbitMQ來處理這種事務補償,最終也只能達到最終一致性,RabbitMQ提供,類似TTL,DLX等定時任務的操作,這種針對秒殺,定時付款等場景還是挺適用,但是對資料要求實時強一致性,可能就需要到zk+dubbo之類的RPC框架來支援。後續這個專題,嘗試從其他的資料找到相應的實際的解決分散式事務的補償機制的更好實現提供給讀者。
目前本月的專題為springcloud結合人工智慧專案的實踐,如果需要程式碼可以留言獲取,截圖的程式碼為慕課網的例項。