node.js - 如何为一个微服务应用托管多个数据库?
问题描述
我想到了一个应用程序,它将使用节点、mongodb + 其他数据库、kubernetes、RabbitMQ、docker 构建并作为前端做出反应。该应用程序将构建在微服务架构中。我们都知道,对于单体应用程序,您只需要一个数据库(MongoDB、MySQL 等),但对于微型应用程序,您可以拥有多个数据库。我的问题是,我是否需要购买多个单独的数据库并将每个服务连接到它们?或者它在微服务设计中是如何工作的。目前,我有一个示例微服务应用程序,该应用程序使用 docker 在我的本地计算机上运行,并且它连接到多个数据库或数据库/服务。我只是想了解这如何与 DigitalOcean 或 AWS 等公司合作。
对此的任何输入都会很棒。
我只是想弄清楚在以后的生产中这将如何工作,以便我了解成本和部署。我已经对数字海洋、AWS 等进行了一些研究,但我仍然可以弄清楚它们是如何工作的。
提前致谢。
解决方案
您不需要运行多个 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
推荐阅读
- ios - iOS 中的 UIViewController 和 UIView 生命周期
- sql-server - 存储过程中的存储过程 NVARCHAR 输出值
- c# - 找不到文件或参考
- javascript - 如何在使用 OpenLayers 修改结束之前减慢鼠标速度
- google-maps - Google 地图 API - 自动完成后从图层(json 或 kml)中检索数据
- c# - 如何在 asp.net core 中按版本和组拆分 swagger API 文档
- microcontroller - 在“裸机”编程时,stm32f4 微控制器上的 UART 通信的实际波特率不正确
- c# - 构建失败:解析参考时出错:“microsoft/dotnet:2.1-runtime AS base”不是有效的存储库/标签:
- javascript - PhoneGap 在不在浏览器中的应用程序上打开链接
- react-native - 如何在本机反应中使总视图居中