2.2. 生成您的 booster 项目
Fuse booster 项目存在,可帮助开发人员开始使用运行独立应用程序。此处提供的说明指导您生成其中一个增强项目,即 Circuit Breaker booster。此练习演示了 Spring Boot 上 Fuse 的有用组件。
Netflix/Hystrix 断路器使分布式应用能够处理对后端服务的网络连接和临时不可用的中断。断路器模式的基本理念是,自动检测到依赖服务的丢失,如果后端服务暂时不可用,可以编程替代行为。
Fuse 断路器提升器由两个相关服务组成:
-
名称服务,将
名称
返回到 greet 的后端服务。 -
一个
问候
服务,即调用name
服务的 frontend 服务以获取名称,然后返回字符串Hello, NAME
。
在此提升器演示中,Hystrix circuit breaker 在 问候器
服务和 名称服务
之间插入。如果 后端名称
服务不可用,则 问候
服务可能会回退到替代的行为并立即响应客户端,而不是在等待名称服务重启时被阻断。
先决条件
- 您必须有权访问 Red Hat Developer Platform。
- 您必须有受支持的 Java Developer Kit (JDK)版本。详情请查看 支持的配置页面。
- 您必须具有 Apache Maven 3.3.x 或更高版本。
流程
- 进入 https://developers.redhat.com/launch。
单击 START。
启动程序向导会提示您登录到您的红帽帐户。
- 单击 登录或注册 按钮,然后登录。
- 在 Launcher 页面上,单击 Deploy an Example Application 按钮。
- 在 Create Example Application 页面上,在 Create Example Application 字段中输入 name fuse-circuit-breaker。
- 点 Select an Example。
在 Example 对话框中,选择 Circuit Breaker 选项。此时会出现 选择运行时 下拉菜单。
- 从 Select a Runtime 下拉菜单中选择 Fuse。
-
从版本下拉菜单中,选择 7.5 (红帽 Fuse) (不要选择
2.21.2 (Community)
版本。 - 点 Save。
- 在 Create Example Application 页面中,点 Download。
-
当您看到您的应用程序 是 Ready 对话框时,点
Download.zip
。您的浏览器下载生成的 booster 项目(打包为 ZIP 文件)。 - 使用存档实用程序将生成的项目提取到本地文件系统中的方便位置。
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 项目:
打开 shell 提示符并使用 Maven 从命令行构建项目:
cd PROJECT_DIR mvn clean package
打开一个新的 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)
打开一个新的 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
。打开此页面时,它会调用 Greeting Service:
此页面也提供到 Hystrix 仪表板的链接,它监控断路器的状态。
要演示 Camel Hystrix 提供的断路器功能,请在名称服务的 shell 提示符窗口中按 Ctrl+C 来终止后端名称服务。
现在,名称服务不可用,断路器在 中启动,以防止在调用时问候服务挂起。
观察 Hystrix Monitor 仪表板和 Greeting Service 输出中的更改:
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 项目” 步骤后,按照以下步骤构建并运行外部配置提升为本地机器上的独立项目:
- 下载项目并在本地文件系统中提取存档。
构建项目:
cd PROJECT_DIR mvn clean package
运行该服务:
mvn spring-boot:run
打开 Web 浏览器,访问 http://localhost:8080。此页面每 5 秒调用一次 Greeting Service。Greetings Service 通过使用来自
target/classes/application.properties
文件中的booster.nameToGreetvalue
来响应。Greeting Service 每 5 秒显示问候到"默认":
修改
booster.nameToGreet
值:-
在编辑器中打开
target/classes/application.properties
文件。 将
booster.nameToGreetvalue
的值从 默认值 改为另一个值,例如:booster.nameToGreetvalue=Thomas
-
在编辑器中打开
- 在终端窗口中,按 CTRL+C 来停止服务。
再次运行该服务:
mvn spring-boot:run
在 Web 浏览器中,返回到 http://localhost:8080 页面,在 Greeting Service 结果窗口中查看更改的值。
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 替换为 HTTP GET 请求中的 URL 参数的值)。$name
! -
更改 URL
{name}
参数的值,以查看响应中已更改的值。 - 查看 REST API 的 Swagger 页面。
2.2.3.1. 构建并运行 REST API booster
在遵循 REST API 任务的 第 2.2 节 “生成您的 booster 项目” 步骤后,按照以下步骤构建并运行 REST API 提升为本地机器上的独立项目:
- 下载项目并在本地文件系统中提取存档。
构建项目:
cd PROJECT_DIR mvn clean package
运行该服务:
mvn spring-boot:run
- 打开 Web 浏览器 :http://localhost:8080
要执行 HTTP GET 请求示例,请单击 camel/greetings/{name} 按钮。
此时会打开一个新的 Web 浏览器窗口,其中包含
localhost:8080/camel/greetings/Jacopo
URL。URL{name}
参数的默认值为 Jacopo。JSON 响应会出现在浏览器窗口中:
要更改
{name} 'parameter 的值,请更改 URL。例如,要将名称改为 netobserv,请使用此 URL: 'localhost:8080/camel/greetings/ Thomas
。更新的 JSON 响应会出现在浏览器窗口中:
要查看 REST API 的 Swagger 页面,请点 API Swagger 页面按钮。
API swagger 页面在浏览器窗口中打开。