1. 分佈式事務
場景:服務A同時調用服務B和服務C,要求服務B和服務C同時成功時操作才成功。如果其中一個失敗,需要進行事務性回滾。
方案:
(1)分階段提交:引入一個全局事務管理模塊,將服務B和服務C的事務分爲parpare和commit兩個階段。第一階段完成服務B和服務C各自的事務操作,第二階段進行事務提交。如果失敗了,則回滾。
(2)補償機制:同樣引入一個全局事務管理模塊,在服務B和服務C的事務完成後,參與各自的DB事務。一旦出現問題,就諸葛回滾。
(3)異步消息:需要結合MQ來實現,即把全局事務狀態放到MQ消息中,通過MQ消息來控制事務的提交。
2. dubbo協議
Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多種協議,但是Dubbo官網是推薦我們使用Dubbo協議的。