我们使用spring cloud分布式微服务云架构做了b2b2c的电子商务系统,除了架构本身自带的系统服务外,我们将b2b2c的业务服务进行了细粒度拆分,做成了不同的业务微服务。
当我们的业务系统越来越庞大复杂的时候,各种配置也会随之增多。配置文件只要一修改,会对commonservice-config配置中心先停止服务,然后再重新启动,最后使配置生效。
如果服务少,我们可以手动方式来启动,但是对业务和系统的稳定性肯定有一定的影响。
如果是成百上千的服务都靠手动操作,我估计运维人员或技术人员会疯掉的。
针对以上问题,commonservice-config服务端和业务微服务分别做了相关的配置,服务端负责将git(svn或本地文件系统)中存储的配置文件进行配置化(我们使用的是本地配置方案,方便直接将配置文件更新到linux上),
业务微服务通过配置从服务端配置中心获取相关配置,如果配置文件变动了,通过刷新业务微服务的方式,将最新的配置信息获取。
spring cloud Bus通过一个轻量级消息代理连接分布式系统的节点。这可以用于广播状态更改(如配置更改)或其他管理指令。
接下来,我们就来实施通过spring cloud Bus方案,动态刷新服务端配置,具体步骤如下:
1. commonservice-config服务配置可以参考之前的链接:
http://2147775633.iteye.com/admin/blogs/2396692
2. 业务微服务配置(以honghu-member-servcie会员服务为例):
pom文件配置:
-
<
span
style
=
"font-size: 16px;"
>
<
dependency
>
-
<
groupId
>
org.springframework.boot
</
groupId
>
-
<
artifactId
>
<
span
style
=
"font-size: 16px;"
>
spring-boot-starter-actuator
</
span
>
</
artifactId
>
-
</
dependency
>
-
-
<
dependency
>
-
<
groupId
>
org.springframework.cloud
</
groupId
>
-
<
artifactId
>
<
span
style
=
"font-size: 16px;"
>
spring-cloud-starter-bus-amqp
</
span
>
</
artifactId
>
-
</
dependency
>
</
span
>
yml文件配置:
-
<span style=
"font-size: 16px;"
>server:
-
port:
5012
-
spring:
-
application:
-
name: honghu-member-client
-
profiles:
-
active: dev,discoveryClient
-
cloud:
-
config:
-
discovery:
-
enabled:
true
-
service-id: commonservice-config-server
-
<span style=
"font-size: 16px;"
><strong>name: honghu-member
-
profile: dev
-
bus:
-
trace:
-
enabled:
true
#开启消息跟踪 </strong>
-
<strong>rabbitmq:
-
host:
192.168
.
1.254
-
port:
5672
-
username: honghu
-
password: honghu</strong> </span>
-
eureka:
-
client:
-
serviceUrl:
-
defaultZone: http:
-
instance:
-
prefer-ip-address:
true
-
logging:
-
level:
-
root: INFO
-
org.springframework.security: INFO
-
management:
-
security:
-
enabled:
false
-
security:
-
basic:
-
enabled:
false
</span>
编写一个测试类(MemberController.java),用来获取配置项
-
<span style=
"font-size: 16px;"
>
package
com.honghu.cloud.controller;
-
-
import
org.springframework.beans.factory.annotation.Value;
-
import
org.springframework.cloud.context.config.annotation.RefreshScope;
-
import
org.springframework.web.bind.annotation.GetMapping;
-
import
org.springframework.web.bind.annotation.RestController;
-
-
<strong>
@RefreshScope
</strong>
-
@RestController
-
public
class
MemberController {
-
-
@Value
(
"${profile}"
)
-
private
String profile;
-
-
@GetMapping
(
"/profile"
)
-
public
String getProfile() {
-
return
this
.profile;
-
}
-
}</span>
3. 查看注册中心,commonservice-config、honghu-member-service服务是否已经注册成功
4. 访问一下profile,获取profile对应的配置信息(原配置):
访问http://localhost:7071/profile ==》 访问结果:123456
5. 修改config配置中心的配置文件,将profile=123456修改为honghu123456
再次访问http://localhost:7071/profile ==》 访问结果:123456
6. 使用spring cloud bus 刷新方案(使用post man测试工具进行测试)
http://localhost:7071/bus/refresh
再次访问http://localhost:7071/profile ==》 访问结果:honghu123456
到此,整个commonservice-config配置中心动态刷新方案整理完毕(需要源码可以加qq:2147775633)!!
欢迎大家和我一起学习spring cloud构建微服务云架构,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。
(企业架构源码可以加求球:三五三六二四七二五九)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69984376/viewspace-2734097/
,如需转载,请注明出处,否则将追究法律责任。