【问题标题】:What is the difference between a circuit breaker and a bulkhead pattern?断路器和隔板模式有什么区别?
【发布时间】:2020-07-14 08:37:10
【问题描述】:

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

【问题讨论】:

    标签: spring-boot microservices circuit-breaker


    【解决方案1】:

    这些是根本不同的模式。

    断路器模式在调用方实现,以防止可能难以处理调用的服务不堪重负。可以在 here 找到 Spring 中的示例实现。

    隔板模式在服务端实现,以防止在处理单个来电期间出现故障,影响其他来电的处理。可以在 here 找到 Spring 中的示例实现。

    这些模式唯一的共同点是它们都旨在提高分布式系统的弹性

    因此,虽然您当然可以在同一个服务中同时使用它们,但您必须了解它们彼此之间没有关系,因为一个负责拨打电话,另一个负责处理呼叫。

    【讨论】:

      【解决方案2】:

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

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

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

      1. 另外,@tom redfern 在 bulkheading 的情况下也是正确的,这是在被调用的服务中实现的模式。因此,如果您通过跨越其他多个请求或工作负载来响应外部请求,则应避免将所有这些工作负载放入单个单元(线程)中。相反,为您跨越的每个请求将工作负载分成多个部分(线程池)。

      更多关于bulkheading的信息可以在这里找到:https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead

      您的问题是是否可以在同一个微服务中使用这两种模式。答案是:是的,你可以,而且很多时候情况暗示了这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-26
        • 2022-01-03
        • 2010-10-14
        • 1970-01-01
        • 2011-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多