舱壁和断路器的查询



对于弹性分布式系统,我们实际上有两种模式,CircuitBreaker和BulkHead。

As circuitBreaker需要在需要调用错误依赖的客户端构建。这将返回错误的默认输出,而不会在任何中断的情况下调用它,并避免调用错误的依赖项,因此在特定的时间点不会占用新线程。

但是在Bulkhead中,我们已经根据下游依赖关系划分了numberOfThreads,并且在中断的情况下,这部分线程将被阻塞,但它将无法使用线程池的其余部分。因此,新线程将被占用,直到比例被完全占用。

因此,作为断路器,我们不投入线程,但在隔离壁中,至少要在中断期间投入一定数量的线程。


q1。为什么需要舱壁图案?真的有人需要用隔板吗。如果我们记住停机期间的新线程消耗点。有没有人能在断路器上画出隔板的正极

q2。在这篇文章中提到,bulkHead需要在被调用的服务(故障服务)中实现。我真的无法理解,有问题的依赖/服务如何能够为自己划分线程。在我看来,调用故障服务的服务应该为每个下游依赖(包括故障服务)划分线程。谁能解释一下。

Q-3。谁能分享一些代码参考,当他们使用BulkHead时,是如何为下游服务划分线程的?

R1:在高负载系统下(如果超时限制相对较高),当依赖项失败或增加延迟时,您的服务器可能会在断路器打开电路之前耗尽可用线程。

您可以减少超时限制,但是在某些情况下,根据您的需求,限制线程数可能更合适。

请注意,CB的一些实现在默认情况下包含了一个Bulkhead模式。

R2:通过"舱壁模式"在服务端实现。作者的意思是,它是一个在服务器上运行的组件,同时也是其他组件的客户端。(这里的服务器和客户端是相对的)

最新更新