将多个服务连接到同一数据库服务器,但每个服务都有自己的数据库,这是一种好的做法吗?我想有一个Postgres实例比每个服务/容器有自己的实例要好。
我的问题是,每个服务是否应该:
我理解每个服务都应该有自己的数据库,但这也意味着它们应该完全解耦,即使是在服务器方面。
我猜我想要有一台db服务器的原因是,这样就不会在运行多个db服务器实例时“浪费”资源。
我也明白,拥有一台服务器意味着所有的服务都将以硬件的方式耦合
发布于 2018-12-03 23:53:44
这真的不重要。现代基础设施往往不关心运行同一服务的多个副本的开销。由于数据库I/O通常是一个关键的性能点,因此您可能会发现不共享数据库更易于管理,这样您就可以在专用和/或更大的硬件上使数据库承受更重的负载。
(还要考虑在专用硬件上运行数据库,而不是在Docker下运行:它们是您必须备份的东西,并且您将比应用程序堆栈的其余部分更新它们的频率低得多,因此它们的生命周期与一次性Docker容器有根本的不同。如果您使用的是提供托管数据库服务的公共云服务,并且愿意为此付费,那么这也是一个非常合理的选择。)
无论您决定什么,您几乎肯定需要使所有参数(主机、数据库、用户名、密码)都是可配置的,通常是通过环境变量。(我看到太多在源代码中硬编码了主机名的SO问题。)您应该能够在开发、测试和生产环境中使用不同的选项部署相同的映像,这些环境通常具有不同的主机名。
发布于 2018-12-04 04:06:10
是的,在同一台服务器上有多个服务是可以的。
部署配置应根据您的运营需求(成本、性能监控等)进行指导只要服务是解耦的,您就可以根据操作需要自由地移动数据
发布于 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个数据库)。
通常,当您与不同的团队(负责处理每个服务)一起工作时,您会发现这种情况,每个团队都决定自己的选择。
https://stackoverflow.com/questions/53595219
复制相似问题