2.2. 生成您的 booster 项目


Fuse booster 项目存在,可帮助开发人员开始使用运行独立应用程序。此处提供的说明指导您生成其中一个增强项目,即 Circuit Breaker booster。此练习演示了 Spring Boot 上 Fuse 的有用组件。

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

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

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

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

先决条件

流程

  1. 进入 https://developers.redhat.com/launch
  2. 单击 START

    启动程序向导会提示您登录到您的红帽帐户。

  3. 单击 登录或注册 按钮,然后登录。
  4. Launcher 页面上,单击 Deploy an Example Application 按钮。
  5. Create Example Application 页面上,在 Create Example Application 字段中输入 name fuse-circuit-breaker
  6. Select an Example
  7. Example 对话框中,选择 Circuit Breaker 选项。此时会出现 选择运行时 下拉菜单。

    1. Select a Runtime 下拉菜单中选择 Fuse
    2. 从版本下拉菜单中,选择 7.5 (红帽 Fuse) (不要选择 2.21.2 (Community) 版本。
    3. Save
  8. Create Example Application 页面中,点 Download
  9. 当您看到您的应用程序 是 Ready 对话框时,点 Download.zip。您的浏览器下载生成的 booster 项目(打包为 ZIP 文件)。
  10. 使用存档实用程序将生成的项目提取到本地文件系统中的方便位置。

2.2.1. circuit Breaker booster

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

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

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

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

2.2.1.1. 构建并运行 Circuit Breaker booster

按照 Circuit Breaker mission 的 第 2.2 节 “生成您的 booster 项目” 步骤后,按照以下步骤构建并运行 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

2.2.2. 外部化配置提升器

Externalized Configuration booster 提供了如何为 Apache Camel 路由外部配置的示例。对于 Spring Boot 独立部署,配置数据存储在 application.properties 文件中。

注意

对于 OpenShift 部署的 Fuse,配置数据存储在 ConfigMap 对象中。

2.2.2.1. 构建并运行 Externalized Configuration booster

按照 外部配置 任务的 第 2.2 节 “生成您的 booster 项目” 步骤后,按照以下步骤构建并运行外部配置提升为本地机器上的独立项目:

  1. 下载项目并在本地文件系统中提取存档。
  2. 构建项目:

    cd PROJECT_DIR
    mvn clean package
  3. 运行该服务:

    mvn spring-boot:run
  4. 打开 Web 浏览器,访问 http://localhost:8080。此页面每 5 秒调用一次 Greeting Service。Greetings Service 通过使用来自 target/classes/application.properties 文件中的 booster.nameToGreetvalue 来响应。

    Greeting Service 每 5 秒显示问候到"默认":

    configmapbooster
  5. 修改 booster.nameToGreet 值:

    1. 在编辑器中打开 target/classes/application.properties 文件。
    2. booster.nameToGreetvalue 的值从 默认值 改为另一个值,例如:

      booster.nameToGreetvalue=Thomas
  6. 在终端窗口中,按 CTRL+C 来停止服务。
  7. 再次运行该服务:

    mvn spring-boot:run
  8. 在 Web 浏览器中,返回到 http://localhost:8080 页面,在 Greeting Service 结果窗口中查看更改的值。

    configmapbooster2

2.2.3. REST API booster

REST API 级别 0 任务演示了如何使用 REST 框架通过 HTTP 将业务运营映射到通过 HTTP 的远程过程调用端点。这个任务与用于 Matson Maturity Model 中的 Level 0 对应。

此提高器引入了使用 HTTP 协议与远程(由 Apache Camel 公开)服务交互的机制。通过使用此 Fuse 提升,您可以快速构建并灵活地设计 REST API。

使用这个 booster 来:

  • camel/greetings/{name} 端点上执行 HTTP GET 请求。此请求以 JSON 格式生成响应,有效负载为 Hello, $name! (其中 $name 替换为 HTTP GET 请求中的 URL 参数的值)。
  • 更改 URL {name} 参数的值,以查看响应中已更改的值。
  • 查看 REST API 的 Swagger 页面。

2.2.3.1. 构建并运行 REST API booster

在遵循 REST API 任务的 第 2.2 节 “生成您的 booster 项目” 步骤后,按照以下步骤构建并运行 REST API 提升为本地机器上的独立项目:

  1. 下载项目并在本地文件系统中提取存档。
  2. 构建项目:

    cd PROJECT_DIR
    mvn clean package
  3. 运行该服务:

    mvn spring-boot:run
  4. 打开 Web 浏览器 :http://localhost:8080
  5. 要执行 HTTP GET 请求示例,请单击 camel/greetings/{name} 按钮。

    此时会打开一个新的 Web 浏览器窗口,其中包含 localhost:8080/camel/greetings/Jacopo URL。URL {name} 参数的默认值为 Jacopo

    JSON 响应会出现在浏览器窗口中:

    restbooster2
  6. 要更改 {name} 'parameter 的值,请更改 URL。例如,要将名称改为 netobserv,请使用此 URL: 'localhost:8080/camel/greetings/ Thomas

    更新的 JSON 响应会出现在浏览器窗口中:

    restbooster3
  7. 要查看 REST API 的 Swagger 页面,请点 API Swagger 页面按钮。

    API swagger 页面在浏览器窗口中打开。

    restbooster4
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.