1.典型場景就是微服務架構
微服務之間通過遠程調用來實現事務控制。
比如:訂單微服務和庫存微服務,下單的同時訂單微服務請求庫存服務減少庫存。
簡言之:跨JVM進程產生的分佈式事務。
2.單體系統訪問多個數據庫實例
當單體系統訪問多個數據庫實例時就產生分佈式事務。
比如:用戶信息和訂單信息分別在兩個不同的(MySQL)關係數據庫實例。用戶管理系統刪除用戶信息,需要分別刪除用戶信息和用戶的訂單信息。由於數據分佈在不同的數據庫實例上,需要操作不同的數據庫連接池來操作數據,此時就產生了分佈式事務。
簡言之:跨數據庫實例產生分佈式事務。
3.多個服務訪問同一個數據庫實例
多個服務訪問同一個數據庫實例
訂單微服務和庫存微服務同時訪問同一個數據庫實例也會產生分佈式事務。用於兩個服務跨JVM進程,兩個微服務分別持有了不同的數據庫鏈接,進行數據庫的數據操作。這樣同樣也會產生分佈式事務。