dockerized 微服务中的同步问题

时间:2021-04-27 10:33:00

标签: javascript node.js docker docker-compose axios

我已经用 Node.js 编写了 dockerized 微服务,并且在某些情况下,某些服务在它所依赖的服务启动之前就启动了,因此存在一些导致连接拒绝错误的同步问题。

我主要使用 HTTP 进行服务之间的通信

我目前在必要时使用暂停和重试,但这更像是一种黑客行为,有没有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

首先,如果您的服务依赖其他服务,那么可能是时候重新评估它们的边界了。服务应该是自治的。如果不是,则存在耦合问题,最好合并服务,以便它们一起启动,甚至可能在同一个 Node 进程中。当然,微服务架构规定了服务的物理和逻辑分离。这有时是一个陷阱,使他们变得不那么可靠,而不是更加独立。

其次,分布式系统必须处理不可靠的网络。在这种情况下,重试是可行的方法 - 这不是黑客攻击,某些连接时不时会失败是生活中的事实。您可以选择将启动时的连接尝试视为任何其他重试:重复至无穷大。最重要的是,您的服务不会在未连接到所需内容时假装它就绪健康