在单独的节点上部署微服务及其数据库

问题描述 投票:2回答:2

我有一个关于微服务应用程序及其部署的一般问题。

基于该模式,由于松散耦合和关注点分离,每个微服务都应该有自己的数据库(如果需要)是明确的。但是,这些微服务和数据库是否可以独立分离并部署在单独的硬件节点上?

例如,如果我使用Docker,我是否可以将微服务X和相应的数据库X部署在两个不同的容器中,这两个容器位于具有不同IP地址的两台不同的机器中?

应该可以提供额外的费用。然而,让我好奇的是什么才能代表或反对这种方法呢?这样做会有收获吗?或者它只是一个过度工程?

database deployment microservices
2个回答
1
投票

例如,如果我使用Docker,我是否可以将微服务X和相应的数据库X部署在两个不同的容器中,这两个容器位于具有不同IP地址的两台不同的机器中?

是的,我建议您这样做,因为您的微服务和数据存储可以独立扩展,您可以独立设置监控,指标和警报(对于与该服务相关的指标)。

缺点:你会有一些网络延迟,你将不得不维护两个不同的“机器”。

注意:“两台不同的机器”是有争议的,因为您可能最终在同一物理机器中的两个不同的VM中,除非您使用自己的数据中心的裸机。


0
投票

您被要求不共享数据库的原因是为了确保您仅通过api合同连接其他服务而不是其他任何服务,让您可以自由地更改api背后的任何内容。

现在,无论是在一个节点上部署所有服务还是在不同节点上部署,都不是由微服务决定的。它取决于您的要求,您的规模以及您希望系统具有多大的弹性。

如果需要扩展,可以通过多次在同一节点上部署相同的容器来实现,但这不会给您容错,您的计算机出现故障而您的服务已关闭。将它们放在两个不同的节点上,或者放在两个不同的地方,取决于您的要求。每一个都有利弊,这是你必须做出的选择。

今天的基础设施可以从你身上抽象出来。您在kubernetes上工作,如果您的应用程序部署在同一节点或不同节点上,您可能不知道或不必担心。您关注可用性,只要底层系统保证在某种程度上您应该是好的。

© www.soinside.com 2019 - 2024. All rights reserved.