我计划用微服务架构来构建一个项目。我很想知道哪种设计在数据库方面会更好呢?

如果我为每个服务保留单独的数据库,我们如何决定在哪里保存映射表?
例如,我们有Customers服务(单独的项目与DB 1对话)和Products服务(单独的项目与DB 2对话),我应该在哪里存储客户和产品映射(客户购买的产品)?
在更长的时间内,我需要连接多个表(由于第1点提到的体系结构,这些表位于不同的数据库中),这样的报告怎么样?
发布于 2020-08-05 07:33:43
如果数据有很大的关联,则可以使用单个共享数据库和不同的微服务拥有的表。此外,如果您对数据一致性和服务的可用性有强烈的要求。有正反两方面的。
Pros
可靠性
维修:
功能:
Cons
可靠性:
维修:
纪律:
性能:
恨:
其他想法:
在我个人的解释中,如果您不是Netflix,并且您的应用程序不能容忍任何形式的数据丢失,那么单个数据库是一个很好的选择。
发布于 2020-04-12 12:40:44
第二种方法是微服务体系结构中的“共享数据库”反模式。
在微服务体系结构中,最好使用每个服务模式的数据库。
这些方法在页面末尾的链接中也有优点和缺点。
在回答您关于在哪里存储客户购买的产品的问题时,您需要创建一个新的微服务,它将用自己的数据库存储客户购买的产品。
对于分析和统计,您需要将数据从所有数据库发送到报告模块。换句话说,您需要构建一个etl进程。消息代理(如阿帕奇卡夫卡 )通常用于此目的。这个页面很好地描述了这种方法。
构建一个微服务体系结构是一项非常复杂和广泛的任务,它与许多问题和设计模式相关,这些问题和设计模式允许您将这些问题最小化。我推荐阅读一本"微服务模式“一书,它研究了各种微服务体系结构设计模式。
https://stackoverflow.com/questions/61170828
复制相似问题