【问题标题】:Spring Cloud Circuit Breakers or HystrixSpring Cloud 断路器或 Hystrix
【发布时间】:2018-07-09 18:04:42
【问题描述】:

Hystrix 主要用于使用 Spring Cloud 构建的应用程序。 话虽如此,一个应用程序可能有多个服务层。

例如亚马逊(亚马逊网站必须有多种服务,如登录、产品、购物车、订单、支付等)

客户端(比如网络用户)-> Web 应用程序 X -> 服务 A(它使用数据源 A)-> 服务 B(数据源 B)-> 服务 C(数据源 C)-> 服务 D (数据源 D)-> 服务 E(数据源 E)

在这种情况下,当服务 E 出现问题时,如何将其导航回客户端? Hystrix 在这里如何有助于了解服务 E 中一项特定功能的不可用性?

如果该示例是错误的,那么 Hystrix 范围是否仅限于一个服务中的多个进程,而不是一个应用程序中使用的多个服务? 话虽如此,上面的例子可以像下面这样调整

客户端(比如 web 用户)-> web 应用程序 X -> 服务 A -> 服务 A 内部假设有进程 1 -> 进程 2 -> 进程 3 -> 进程 4-> 进程 5 并且进程 5 中的任何失败都会被导航回进程 1,然后返回到客户端。

我的问题更多是关于在这里维护线程状态。

使用 try-catch,每个服务的线程范围都是有限的(如果有错误,请纠正我)。

Hystrix 如何在整个事务中维护线程状态?

【问题讨论】:

  • Spring cloud 断路器有一些问题。使用 Hystrix
  • 谢谢。但是我的问题在这里有点不同。
  • 很抱歉。您的主题行确实具有误导性。 :) 请参阅下面的答案。

标签: spring-cloud hystrix circuit-breaker


【解决方案1】:

Hystrix 主要用于使用 spring 构建的应用程序 云

不完全是。 Hystrix 通常用于启用断路器功能。它可以在任何地方使用。即使是简单的方法调用 例如

class A {

    B b;

    public void methodA() {
               b.methodB();
    }
}


class A {

    DatabaseConnectionPool object;


    @HystrixCommand(fallbackMethod = "abcd")
    public void methodB() {
               // Get db object from pool. 
               // call db and fetch something.
    }
}

即使是简单的方法调用,也可以使用。包裹在 Hystrix 周围的代码中正在做什么并不重要。 但通常我们在代码片段周围使用 Hystrix,这些代码会因未知原因引发异常(尤其是在调用不同的应用程序时)

在这种情况下,当服务 E 发生故障时,如何 导航回客户端? Hystrix 如何在这里有用 知道服务 E 中的一项特定功能不可用吗?

如果你包装每个方法调用,即来自服务 A --> 服务 B 和服务 B --> 服务 C 并进一步使用 Hystrix,那么每个调用都被视为一个电路,你可以使用 Hystrix-dashboard 进行可视化,什么是每个电路的状态(闭合、断开、半开)。 假设来自 Service B --> Service C 的调用失败(抛出异常),那么 Hystrix 会将原始异常包装在 Hystrix Exception 中并将其抛出。如果你有一个 fallback 方法,那么它会转到 Service B 中的 fallback 方法并返回 fallback 中指定的值。如果你没有回退,那么它会在链的上层抛出异常。同样的事情在链条的更高处重复。

Hystrix 如何在整个事务中维护线程状态?

对于使用 Hystrix 包装的每个调用,Hystrix 都会维护一个线程池,您可以对其进行完全配置。

如果我已经拥有使用 try-catch 的现有 Java 功能,为什么还要 有人明确选择 Hystrix 吗?

Hystrix 提供了更多的功能。您甚至无法将其与 try catch 进行比较。我建议你阅读断路器模式。

【讨论】:

  • 请在下面的评论中查看我的问题。
猜你喜欢
  • 2016-06-18
  • 2020-11-27
  • 2021-08-07
  • 2020-10-29
  • 2016-03-31
  • 2015-05-31
  • 2018-07-21
  • 2016-12-11
  • 2016-08-06
相关资源
最近更新 更多