每個服務共享資料庫



問題陳述

微服務架構將應用程式構建為一組鬆散耦合的微服務,並且可以以敏捷的方式獨立開發每個服務,以實現持續交付/部署。基於微服務的應用程式中應該採用哪種資料庫結構/架構。

解決方案

我們可以使用一個在微服務之間共享的資料庫。每個服務都可以免費使用可供其他服務訪問的資料。資料庫將維護 ACID 事務。

Shared Database per Service Microservices Design Pattern

在此模式中,每個服務都應該使用底層資料庫的事務管理,從而可以使用資料庫的 ACID 屬性。考慮以下虛擬碼:

BEGIN TRANSACTION
…
SELECT * FROM ORDERS WHERE CUSTOMER_ID = ?
…
SELECT CREDIT_LIMIT FROM CUSTOMERS WHERE CUSTOMER_ID = ?
…
INSERT INTO ORDERS ... WHERE ORDER_LIMIT < CREDIT_LIMIT
…
COMMIT TRANSACTION

此處,訂單服務使用資料庫事務來確保在訂單期間檢查客戶的信用額度。

廣告