每个服务共享数据库
问题陈述
微服务架构将应用程序构建为一组松散耦合的微服务,每个服务都可以以敏捷的方式独立开发,以实现持续交付/部署。基于微服务的应用程序中的数据库结构/体系结构应该是什么。
解决方案
我们可以使用在微服务之间共享的数据库。每项服务都可以免费使用其他服务可访问的数据。数据库将维护 ACID 事务。
在这种模式中,每个服务都应该使用底层数据库的事务管理,以便可以利用数据库的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
这里的订单服务使用数据库事务来确保在订单期间检查客户的信用额度。