Spring Boot 断路器和隔板式有什么区别?

5vf7fwbs  于 2023-02-04  发布在  Spring
关注(0)|答案(2)|浏览(150)

在开发微服务的过程中,我们可以在Sping Boot 中同时使用这两种方法吗?

qcuzuvrc

qcuzuvrc1#

这些是“根本不同”的模式。

一个断路器模式在调用者上实现,以避免服务在处理调用时被淹没。在Spring中可以找到一个示例实现here
bulkhead模式在服务上实现,以防止在处理单个传入调用时出现故障,影响其他传入调用的处理。Spring中的示例实现可以在here中找到。

这些模式的唯一共同点是它们都是为了增加分布式系统的 resilience 而设计的。
虽然您当然可以在同一服务中一起使用它们,但您必须了解它们彼此无关,因为一个负责拨打电话,另一个负责处理电话。

lh80um4z

lh80um4z2#

是的,它们可以一起使用,但并不总是必要的。
1.正如@tom redfern所说,断路器是在调用方端实现的。因此,如果你正在向另一个服务发送请求,你应该将这些请求 Package 到一个特定于该服务的断路器中。请记住,每个其他第三方系统或服务都应该有自己的断路器。否则,一个系统的不可用将通过断开断路器来影响发送到另一个系统的请求。
有关断路器的更多信息,请访问:https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker
1.另外,@tom redfern在bulkheading的情况下也是正确的,这是一种在被调用的服务中实现的模式。因此,如果你通过跨越其他多个请求或工作负载来响应外部请求,你应该避免将所有这些工作负载都放在一个单元(线程)中。相反,你应该为你跨越的每个请求将工作负载分成几个部分(线程池)。
有关舱壁的更多信息,请访问:https://learn.microsoft.com/en-us/azure/architecture/patterns/bulkhead
您的问题是是否可以在同一个微服务中同时使用这两种模式,答案是:是的,你可以这样做,而且很多时候情况都暗示了这一点。

相关问题