首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >断路器和舱壁图案有什么区别?

断路器和舱壁图案有什么区别?
EN

Stack Overflow用户
提问于 2020-04-02 11:26:18
回答 2查看 7.6K关注 0票数 16

在微服务开发过程中,我们可以在Spring中同时使用这两者吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-02 13:35:01

是的,它们可以一起使用,但并不总是必要的。

  1. 正如@tom所说,断路器是在主叫端实现的。因此,如果您要向另一个服务发送请求,则应该将这些请求封装到特定于该服务的断路器中。请记住,任何其他第三方系统或服务应该有自己的断路器。否则,一个系统的不可用性将影响您通过打开断路器发送给另一个系统的请求。

关于断路器的更多信息可以在这里找到:https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker

  1. 此外,对于bulkheading,,@tom redfern也是正确的--这是一个在调用的服务中实现的模式。因此,如果您通过跨其他多个请求或worload来响应外部请求,则应该避免将所有这些worload都执行到单个单元(线程)中。相反,将worload分割成块(线程池),用于跨跨的每个请求。

有关舱位的更多信息可以在这里找到:https://learn.microsoft.com/en-us/azure/architecture/patterns/bulkhead

你的问题是,是否有可能在同一个微服务中使用这两种模式。答案是:是的,你可以,而且通常情况意味着这一点。

票数 9
EN

Stack Overflow用户

发布于 2020-04-02 12:24:14

这些都是根本不同的模式。

在主叫方实现断路器模式,以防止难以处理呼叫的服务。Spring中的一个示例实现可以找到这里

在服务端实现了一个舱壁模式,以防止在处理单个传入呼叫时影响到其他传入呼叫的处理过程中出现故障。Spring中的一个示例实现可以找到这里

这些模式的唯一共同点是,它们都是为了提高分布式系统的抗灾能力而设计的。

因此,虽然您当然可以在同一服务中将它们一起使用,但您必须明白,它们之间没有关系,因为一个与打电话有关,另一个与处理呼叫有关。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60990475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档