了解对Spring Cloud Bus的需求
步骤1: 选择项目
spring-cloud-config-server 并运行
SpringCloudConfigServerApplication.java 文件。
步骤2: 选择项目
limits-service 并运行
LimitsServiceApplication.java 文件。
步骤3: 打开浏览器,然后输入 https: //localhost/8080/limits 。它返回以下响应:
{"maximum":222,"minimum":2}
我们正在从
limits-service-qa.properties 文件中获取这些值,因为我们已将该文件配置为
bootstrap.properties 文件中> limits-service 。
在下一步中,我们将再创建一个
LimitsServiceApplication实例。
步骤4: 创建
LimitsServiceApplication的实例。
右键单击
limits-service 项目->运行方式->运行配置…->右键单击
LimitsServiceApplication ->复制->将应用程序名称重命名为
LimitsServiceApplication8081 ->单击
Arguments 选项卡->提供VM参数:
-Dserver.port = 8081 ->运行
。
LimitsServiceApplicat的实例ion将在端口
8081 上运行。
步骤5: 打开浏览器并调用URL http://locahost: 8081/limits 。它返回与原始限制服务发送的响应相同的响应。
{"maximum":222,"minimum":2}
limits-service的两个实例已启动并正在运行。
步骤6: 在
limits-service-qa.properties中进行更改,我们已将最小值从
2 更改为
22 。
limits-service-qa.properties
limits-service.minimum=22
limits-service.maximum=222
我们需要
提交更改。
步骤7: 打开
Git Bash 并运行以下命令:
$ cd git-localconfig-repo
$ git add *
$ git commit –m "qa minimum to 22"
再次,调用URLs http://localhost:8080/limits 和 http://localhost:8081/limits 。这两个URL都返回旧值,而我们已经在Git存储库中提交了这些值。它不反映
limits-service 中的值。要更改限额服务,我们将使用
邮递员。
注意: 在进行下一步之前,请从Limits-service中删除安全性。
步骤8: 使用以下命令打开
limits-service.properties 文件并禁用
安全性声明。
management.security.enabled=false
再次,在
limits-service-qa.properties 文件中设置旧值,然后提交更改。
步骤9: 打开
邮递员,并发送带有URL http的
POST 请求。 : //localhost:8080/application/refresh 。
注意: 如果您正在调用URL http://localhost:8080/limits,并且它不返回新值。因此,要获取有关调用URL http://localhost:8081/limits的新值,您必须执行以下操作: 打开邮递员并发送URL为http://localhost:8081/application/refresh的POST请求。
步骤10: 。调用URL http://localhost:8080/limits 和 http://localhost:8081/limits 。现在,两个URL都返回更改后的值。
{"maximum":222,"minimum":22}
我们创建了limits-service的两个实例。假设有一百个并行运行的极限服务实例。我们需要调用100个URL才能从Git存储库中刷新配置。
调用100个URL并不像限制服务数量的增加那样容易。随之而来的是,服务的维护麻烦也越来越大。
每当我们对配置进行更改时,它都必须反映微服务中的更改。在这里,
Spring Cloud Bus 提供了解决方案,因此我们不需要调用数百个URL。
Spring Cloud Bus提供了所有一百个实例的URL。当我们调用该URL时,将使用Git配置中的最新值来更新微服务的所有实例。
在下一步中,我们将实现Spring Cloud Bus。
实现Spring Cloud Bus
在本节中,当我们在Git存储库中进行更改时,我们必须命中
limits-service 的多个实例>刷新配置。
我们将调用一个URL,它将反映微服务的所有一百个实例。在这里,我们将使用
Spring Cloud Bus 。 Spring Cloud Bus中有许多可用的选项:
Apache
Kafka,RabbitMQ 等。在本部分中,我们将使用
RabbitMQ 。
注意: 在继续下一步之前,请确保
RabbitMQ 服务器在后台运行。
让我们在
limits-service 和
spring-cloud-config-server 中实现Spring Cloud Bus。
步骤1: 打开
limits-service 和
spring-cloud-config-server的 pom.xml 文件项目
。 添加
amqp 依赖性并保存文件以反映更改。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
步骤2: 打开
bootstrap.properties 文件并通过添加以下语句来禁用管理安全性:
依赖性并保存文件以反映更改。
management.security.enabled=false
步骤3: 首先,运行
SpringCloudConfigServerApplication.java 文件,然后运行limit-service的两个实例:
LimitsServiceApplication 和
LimitsServiceApplication8081。
步骤5: 调用网址 http://localhost:8080/limits 。它返回以下响应:
依赖性并保存文件以反映更改。
{"maximum":222,"minimum":22}
现在,调用URL http://localhost:8081/limits 。还会返回相同的响应。
步骤6: 打开
limits-service-qa.properties 文件,并从
更改最小值22 到
29 。
现在我们必须提交更改。
步骤7: 打开
邮递员并使用URL http://localhost:8080/bus/发送
POST 请求刷新。
注意: 如果您使用的是Spring Boot 2.0.0或更高版本,请使用以下URL: http://localhost:8080/actuatror/bus-refresh
步骤8: 打开浏览器并调用两个实例( http://localhost : 8080/limits 和 http://localhost:8081/limits )。这两个URL都返回我们在
limits-service-qa.properties 文件
中配置的更新值。
{"maximum":222,"minimum":29}
我们已经看到最小值更改为29。在这里,您可以注意到我们没有在Git存储库中手动提交更改,但是更改反映在Limits-service的两个实例中。
我们没有提交Git存储库,而是调用了URL http://localhost:8080/bus/refresh 。这一切都是由于
Spring Cloud Bus 造成的。
在特定情况下,我们已经在
RabbitMQ 上运行了Spring Cloud Bus。当我们启动应用程序时,它也从此开始。启动Spring Cloud Bus之后,所有微服务都会向
Bus 注册。
当我们对配置进行更改并且在任何实例上调用更改时,微服务都会发送
Spring Cloud Bus 上的事件。 Spring Cloud Bus将该事件传播到已向其注册的所有微服务实例。
在本节中,我们解决了调用多个微服务实例的问题。