首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >多个微服务共享同一个数据库服务器(一个容器,多个数据库)

多个微服务共享同一个数据库服务器(一个容器,多个数据库)
EN

Stack Overflow用户
提问于 2018-12-03 21:49:36
回答 3查看 1K关注 0票数 2

将多个服务连接到同一数据库服务器,但每个服务都有自己的数据库,这是一种好的做法吗?我想有一个Postgres实例比每个服务/容器有自己的实例要好。

我的问题是,每个服务是否应该:

  1. 在自己的容器中运行,数据库服务器实例在同一容器中运行
  2. 在自己的容器中运行,该服务的数据库在单独的容器上运行(多个数据库容器/每个服务一个)
  3. 一个数据库服务器,多个数据库,一个容器用于所有数据库和所有服务连接此容器/ db服务器

我理解每个服务都应该有自己的数据库,但这也意味着它们应该完全解耦,即使是在服务器方面。

我猜我想要有一台db服务器的原因是,这样就不会在运行多个db服务器实例时“浪费”资源。

我也明白,拥有一台服务器意味着所有的服务都将以硬件的方式耦合

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-03 23:53:44

这真的不重要。现代基础设施往往不关心运行同一服务的多个副本的开销。由于数据库I/O通常是一个关键的性能点,因此您可能会发现不共享数据库更易于管理,这样您就可以在专用和/或更大的硬件上使数据库承受更重的负载。

(还要考虑在专用硬件上运行数据库,而不是在Docker下运行:它们是您必须备份的东西,并且您将比应用程序堆栈的其余部分更新它们的频率低得多,因此它们的生命周期与一次性Docker容器有根本的不同。如果您使用的是提供托管数据库服务的公共云服务,并且愿意为此付费,那么这也是一个非常合理的选择。)

无论您决定什么,您几乎肯定需要使所有参数(主机、数据库、用户名、密码)都是可配置的,通常是通过环境变量。(我看到太多在源代码中硬编码了主机名的SO问题。)您应该能够在开发、测试和生产环境中使用不同的选项部署相同的映像,这些环境通常具有不同的主机名。

票数 3
EN

Stack Overflow用户

发布于 2018-12-04 04:06:10

是的,在同一台服务器上有多个服务是可以的。

部署配置应根据您的运营需求(成本、性能监控等)进行指导只要服务是解耦的,您就可以根据操作需要自由地移动数据

票数 0
EN

Stack Overflow用户

发布于 2020-04-10 17:54:24

好的,你可以考虑这些:

1)如果你的服务不关心你的数据库服务器,我的意思是,对于服务A,它必须是MongoDB,服务B必须是Ms. server,等等。

然后,您可以使用此设置:

一个数据库服务器->,具有多个数据库->,每个服务一个数据库。

2)但是,如果你觉得这很重要,就像我下面描述的那样:

服务A -> Postgres

服务B -> Postgres

Service C -> Ms. Server

服务D -> MongoDB

然后,您将有3个数据库服务器,其中服务A和B将共享相同的Postgres数据库服务器(包含2个数据库,一个用于服务A,一个用于服务B),并且服务C将具有1个Ms.服务器(包含1个数据库)以及服务D MongoDB服务器(包含1个数据库)。

通常,当您与不同的团队(负责处理每个服务)一起工作时,您会发现这种情况,每个团队都决定自己的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53595219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档