首页 > 解决方案 > dockerized 微服务中的同步问题

问题描述

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

我主要HTTP用于服务之间的通信

我目前在必要时使用暂停和重试,但这更像是一种黑客攻击,有更好的方法吗?

标签: javascriptnode.jsdockerdocker-composeaxios

解决方案


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

其次,分布式系统必须处理不可靠的网络。在这种情况下,重试是要走的路——这不是黑客攻击,这是一个生活中的事实,一些连接会时不时地失败。您可以选择在启动时将连接尝试视为任何其他重试:重复到无穷大。最重要的是,当您的服务未连接到所需的东西时,它不会假装它已准备好健康。


推荐阅读