2

我是微服务的新手,并且怀疑谷歌并没有真正帮助我。我知道一个微服务必须是独立的,所以即使它的对应物之一离线,它也应该保持正常工作。

考虑到这一点,我无法真正理解断路器甚至服务发现,比如我应该把它放在哪里?由于我对任何微服务的每次调用都会通过断路器,假设我的断路器服务的服务器离线,所以我的整个应用程序注定要失败,直到我修复它。如何解决这个问题?

最重要的是,我应该把断路器放在哪里,在微服务中呢?

4

1 回答 1

2

每当您进行远程调用时,您都应该使用断路器模式

如果您不使用它,那么在某些情况下(例如,当某些微服务关闭时)您的系统会像受到自我 DOS 攻击一样运行。当您链接同步调用时,这种情况就会显现出来。例如,如果您有以下情况:A -> B -> C(A 调用 B,B 调用 C)。如果 C 没有响应而 A 一直在调用,那么 B 可能会因管理来自 A 的等待调用而不知所措,并且无法响应通常会成功的其他服务的合法调用。

使用断路器最常见的地方是在 API 网关中,大部分远程调用都在此处进行(这是它的主要职责)。您也可以在客户端中使用该模式,以强制它们连续停止并重复调用死微服务。

尽管微服务在弹性方面是独立的(即使在其他失败时它们也可以运行),但这并不意味着它们不会相互通信。它们可以以异步方式进行通信,即当一个微服务想要在后台进程中使用来自另一个微服务的数据更新其自己的本地缓存时。

于 2018-06-05T07:14:03.193 回答