【发布时间】:2021-03-25 12:49:39
【问题描述】:
通常团队使用 rest api 从微服务 A 到 B 进行通信,但这意味着紧密耦合,如果可能的话应该避免这种情况。此外,如果存在从 A 到 B 的依赖关系,并且 B 已关闭,则不仅希望不对 A 的原始请求失败,而且请求信息也不应该丢失。 另一种方法是排队。但是:
- 如果 B 下线,那么 A 无论如何都无法回答;
- 即使请求信息在队列中,当 B 上来时也无法处理请求,将响应返回给 A 并返回给客户端;
- 当只有 2 个节点时,最多只需要 2 个队列(每路一个),但是当我们处理 12 个微服务时,为所有这些节点之间的每个通信需求创建一个队列很容易变得不切实际。
最后一个问题:我错过了什么?您能否指出一些可以清楚地回答这个问题的阅读材料,可能还有一个例子?
附:我正在寻找 spring boot atm 来开发我的微服务,在这种情况下的一些指针将不胜感激,但不是必需的。
【问题讨论】:
-
你的假设太严格了。休息 API 很好。 “......并且 B 已关闭,不仅希望不要使对 A 的原始请求失败......”这取决于请求是什么。并不总是需要排队。我建议您阅读有关领域驱动设计的内容,以了解架构。这类问题与所使用的技术无关,而更多地与您正在做的事情(领域)的抽象属性有关。成为微服务或单体并不意味着你必须使用队列,而是你正在做什么告诉你。
标签: architecture microservices