每个服务共享数据库



问题陈述

微服务架构将应用程序构建为一组松散耦合的微服务,并且可以以敏捷的方式独立开发每个服务,以实现持续交付/部署。基于微服务的应用程序中应该采用哪种数据库结构/架构。

解决方案

我们可以使用一个在微服务之间共享的数据库。每个服务都可以免费使用可供其他服务访问的数据。数据库将维护 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

此处,订单服务使用数据库事务来确保在订单期间检查客户的信用额度。

广告