2.2. 构建并运行 Circuit Breaker booster


Netflix/Hystrix 断路器组件使分布式应用能够应对对后端服务的网络连接和临时不可用的中断。断路器模式的基本理念是,自动检测到依赖服务的丢失,如果后端服务暂时不可用,可以编程替代行为。

Fuse 断路器提升器由两个相关服务组成:

  • 名称服务,它将返回一个名称到 greet
  • 一个 问候服务,它调用 name 服务以获取名称,然后返回字符串 Hello, NAME

在演示中,Hystrix circuit breaker 在问候服务和名称服务之间插入。如果名称服务不可用,则问候服务可能会回退到替代的行为并立即响应客户端,而不是在等待名称服务重启时阻止或超时。

先决条件

流程

按照以下步骤构建并运行 Circuit breaker booster 项目:

  1. 打开 shell 提示符并使用 Maven 从命令行构建项目:

    cd PROJECT_DIR
    mvn clean package
  2. 打开一个新的 shell 提示符并启动名称服务,如下所示:

    cd name-service
    mvn spring-boot:run -DskipTests -Dserver.port=8081

    当 Spring Boot 启动时,您应该看到类似如下的输出:

    ...
    2017-12-08 15:44:24.223  INFO 22758 --- [           main] o.a.camel.spring.SpringCamelContext      : Total 1 routes, of which 1 are started
    2017-12-08 15:44:24.227  INFO 22758 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.20.0 (CamelContext: camel-1) started in 0.776 seconds
    2017-12-08 15:44:24.234  INFO 22758 --- [           main] org.jboss.fuse.boosters.cb.Application   : Started Application in 4.137 seconds (JVM running for 4.744)
  3. 打开一个新的 shell 提示符并启动问候服务,如下所示:

    cd greetings-service
    mvn spring-boot:run -DskipTests

    当 Spring Boot 启动时,您应该看到类似如下的输出:

    ...
    2017-12-08 15:46:58.521  INFO 22887 --- [           main] o.a.c.c.s.CamelHttpTransportServlet      : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=]
    2017-12-08 15:46:58.524  INFO 22887 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
    2017-12-08 15:46:58.536  INFO 22887 --- [           main] org.jboss.fuse.boosters.cb.Application   : Started Application in 6.263 seconds (JVM running for 6.819)

    greetings 服务通过 URL 公开 REST 端点 http://localhost:8080/camel/greetings

  4. 进入 http://localhost:8080

    打开此页面时,它会调用 Greeting Service:

    cb greetingservice1

    此页面也提供到 Hystrix 仪表板的链接,它监控断路器的状态。

    cb hystrix dashboard
  5. 要演示 Camel Hystrix 提供的断路器功能,请在名称服务的 shell 提示符窗口中按 Ctrl+C 来终止后端名称服务。

    现在,名称服务不可用,断路器在 中启动,以防止在调用时问候服务挂起。

  6. 观察 Hystrix Monitor 仪表板和 Greeting Service 输出中的更改:

    cb greetingservice2
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.