javascript - dockerized 微服务中的同步问题
问题描述
我已经用 Node.js 编写了 dockerized 微服务,并且在某些情况下,某些服务在它所依赖的服务启动之前就启动了,因此存在一些导致连接被拒绝错误的同步问题。
我主要HTTP
用于服务之间的通信
我目前在必要时使用暂停和重试,但这更像是一种黑客攻击,有更好的方法吗?
解决方案
首先,如果您的服务依赖于其他服务,那么可能是时候重新评估它们的边界了。服务应该是自治的。如果不是,则您遇到了耦合问题,最好合并服务以便它们一起启动,甚至可能在同一个 Node 进程中。当然,微服务架构规定了服务的物理和逻辑分离。这有时是一个陷阱,导致它们不那么可靠,而不是更独立。
其次,分布式系统必须处理不可靠的网络。在这种情况下,重试是要走的路——这不是黑客攻击,这是一个生活中的事实,一些连接会时不时地失败。您可以选择在启动时将连接尝试视为任何其他重试:重复到无穷大。最重要的是,当您的服务未连接到所需的东西时,它不会假装它已准备好或健康。
推荐阅读
- mysql - MySQL:使用事务处理嵌套存储过程中的回滚
- python - 如何从 python 漂亮地打印或格式化堆栈跟踪?
- spring-integration - Spring Integration - 使用 XmlValidatingMessageSelector DSL 在过滤器中添加信息
- spotfire - 书签让用户在错误的页面下线
- javascript - onClick 不适用于我的按钮
- arrays - Vue.js 无法将数组复制到另一个数组
- vuetify.js - v-flex 元素中的 Vuetify 垂直居中
- android - Websocket 根据操作系统给出各种数字
- javascript - 对于创建一个 div 的跨度循环
- python - Keras:方法 on_batch_end() 很慢,但我没有回调?