首页 > 解决方案 > 如何为一个微服务应用托管多个数据库?

问题描述

我想到了一个应用程序,它将使用节点、mongodb + 其他数据库、kubernetes、RabbitMQ、docker 构建并作为前端做出反应。该应用程序将构建在微服务架构中。我们都知道,对于单体应用程序,您只需要一个数据库(MongoDB、MySQL 等),但对于微型应用程序,您可以拥有多个数据库。我的问题是,我是否需要购买多个单独的数据库并将每个服务连接到它们?或者它在微服务设计中是如何工作的。目前,我有一个示例微服务应用程序,该应用程序使用 docker 在我的本地计算机上运行,​​并且它连接到多个数据库或数据库/服务。我只是想了解这如何与 DigitalOcean 或 AWS 等公司合作。

对此的任何输入都会很棒。

我只是想弄清楚在以后的生产中这将如何工作,以便我了解成本和部署。我已经对数字海洋、AWS 等进行了一些研究,但我仍然可以弄清楚它们是如何工作的。

提前致谢。

标签: node.jsmicroservicesmultiple-databases

解决方案


您不需要运行多个 DBMS 实例。您可以轻松地在一台虚拟机上运行一个 MongoDB。

当您进行扩展时,您可能希望让单独的机器为您的服务运行数据库实例,但在开始时,您可能只是在逻辑上将其分开,以确保您不会使用数据库在服务之间进行通信。

Chris Richardson 在他的 microservices.io 网站上说:

There are a few different ways to keep a service’s
persistent data private. You do not need to 
provision a database server for each service. 
For example, if you are using a relational database 
then the options are:

- Private-tables-per-service – each service owns a
set of tables that must only be accessed by that
service

- Schema-per-service – each service has a database
schema that’s private to that service

- Database-server-per-service – each service has
it’s own database server.

来源:https ://microservices.io/patterns/data/database-per-service.html


推荐阅读