我是微服务的新手,并且怀疑谷歌并没有真正帮助我。 我知道微服务必须是独立的,所以即使其中一个对应方脱机,也应该保持正常工作。
考虑到这一点,我无法理解断路器甚至服务发现,比如我应该把它放在哪里?由于我对任何微服务的每次通话都通过断路器,让我们说我的断路器服务的服务器脱机,所以我的整个应用程序都注定失败,直到我修复它。如何解决这个问题?
最重要的是,我应该把断路器放在微服务中吗?
答案 0 :(得分:1)
只要有远程通话,就应该使用断路器模式。
如果你不使用它,那么在某些情况下(即当一些微服务停机时)你的系统就会像在自己的DOS攻击下那样行事。当您链接同步调用时,这种情况就会显现出来。例如,如果您有以下内容:A - > B - > C(A调用B调用C)。如果C没有响应且A继续呼叫,则B可能会因管理来自A的等待呼叫而无法应对,并且无法响应通常会成功的其他服务的合法呼叫。
使用断路器的最常见位置是在API网关中,大多数远程呼叫都是在这里进行的(这是它的主要责任)。您也可以在客户端使用该模式,强制它们连续停止并重复调用死微服务。
尽管微服务在弹性方面是独立的(即使其他方法失败也可以发挥作用),但这并不意味着它们不会相互通信。它们可以以异步方式进行通信,即当一个微服务器想要在后台进程中使用来自另一个微服务器的数据更新其自己的本地高速缓存时。