【发布时间】:2021-04-27 10:33:00
【问题描述】:
我用 Node.js 编写了 dockerized 微服务,并且在某些情况下,一些服务在它所依赖的服务启动之前就启动了,因此存在一些导致连接被拒绝错误的同步问题。
我主要使用HTTP 进行服务之间的通信
我目前在必要时使用暂停和重试,但这更像是一种技巧,有更好的方法吗?
【问题讨论】:
标签: javascript node.js docker docker-compose axios
我用 Node.js 编写了 dockerized 微服务,并且在某些情况下,一些服务在它所依赖的服务启动之前就启动了,因此存在一些导致连接被拒绝错误的同步问题。
我主要使用HTTP 进行服务之间的通信
我目前在必要时使用暂停和重试,但这更像是一种技巧,有更好的方法吗?
【问题讨论】:
标签: javascript node.js docker docker-compose axios
首先,如果您的服务依赖其他服务,那么可能是时候重新评估它们的边界了。服务应该是自治的。如果不是,则您遇到了耦合问题,最好合并服务以便它们一起启动,甚至可能在同一个 Node 进程中。当然,微服务架构规定了服务的物理和逻辑分离。这有时是一个陷阱,会导致它们不那么可靠,而不是更独立。
其次,分布式系统必须处理不可靠的网络。在这种情况下,重试是要走的路——这不是黑客攻击,这是一个生活中的事实,一些连接会时不时地失败。您可以选择在启动时将连接尝试视为任何其他重试:重复到无穷大。最重要的是,当您的服务未连接到所需的东西时,它不会假装它就绪或健康。
【讨论】: