猿问

如何计算断路器从闭合状态变为断开状态的频率?

有没有办法找出猬断路器多久改变其状态,从封闭到开放?我希望像


HystrixCommandMetrics m = ...; 

long count = m.getCumulativeCount(HystrixEventType.SHORT_CIRCUITED);

但这会计算断路器打开时失败的命令执行次数。它不计算状态变化本身。


宝慕林4294392
浏览 170回答 2
2回答

慕沐林林

我不认为与您展示的方法类似的方法是 Hystrix 原生的,尽管可以通过理解Hystrix确定断路器是打开还是关闭的方式来创建一个方法。此处的流程图提供了其工作原理的详细说明。(这些页面详细介绍了流程图)其中一个详细信息专门针对电路是否开放?.摘自电路是否开放?当您执行命令时,Hystrix 会检查断路器以查看电路是否开路。如果电路打开(或“跳闸”),那么 Hystrix 将不会执行命令,但会将流路由到 (8) Get the Fallback。如果电路闭合,则流程继续到 (5) 以检查是否有可用的容量来运行命令。通过识别这种行为,检测状态何时从 Closed 变为 Open 是可能的。从这个页面是豪猪事件类型的简明列表。标记的将在上面引用的步骤中有用:

噜噜哒

断路器本身不提供指标,它仅使用指标来通知其在 CLOSED、HALF_OPEN 和 OPEN 之间的转换。您可以通过为指标流创建自己的订阅者来保持自己的开放和关闭转换计数。您只需要跟踪电路的最后一个已知状态,当您从流中获得更新时,将最后一个已知状态与更新中的状态进行比较。如果它们不同,则发生了转换,您将更新自己的计数器。在 1.4 中,您必须使用new HystrixMetricsPoller(),并将您自己的实现传递给它,MetricsAsJsonPollerListener该实现会isCircuitOpen为每个命令解析提供的 JSON 。在 1.5 中,您将使用HystrixDashboardStream.getInstance().observe()并注册您自己的消费者来获取更新。我认为这种方法需要更多的努力来获取HystrixCircuitBreaker每个命令的底层对象,这可以让您检查isOpen()以获取每个断路器的当前状态。
随时随地看视频慕课网APP

相关分类

Java
我要回答