每个服务共享数据库
问题陈述
微服务架构将应用程序构建为一组松散耦合的微服务,并且可以以敏捷的方式独立开发每个服务,以实现持续交付/部署。基于微服务的应用程序中应该采用哪种数据库结构/架构。
解决方案
我们可以使用一个在微服务之间共享的数据库。每个服务都可以免费使用可供其他服务访问的数据。数据库将维护 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
此处,订单服务使用数据库事务来确保在订单期间检查客户的信用额度。
广告