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

What is the difference between a circuit breaker and a bulkhead pattern?

在开发微服务的过程中,SpringBoot 可以同时使用吗?

这些是根本不同的模式。

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

中找到

在服务端实现了 bulkhead 模式,以防止在处理单个来电时出现故障影响其他来电的处理。 Spring 中的示例实现可以在 here.

中找到

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

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

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

  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

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