继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JavaB2B2C o2o多用户商城-使用springcloud刷新配置

holdtom
关注TA
已关注
手记 1853
粉丝 240
获赞 991


我们使用spring cloud分布式微服务云架构做了b2b2c的电子商务系统,除了架构本身自带的系统服务外,我们将b2b2c的业务服务进行了细粒度拆分,做成了不同的业务微服务。

当我们的业务系统越来越庞大复杂的时候,各种配置也会随之增多。配置文件只要一修改,会对commonservice-config配置中心先停止服务,然后再重新启动,最后使配置生效。

如果服务少,我们可以手动方式来启动,但是对业务和系统的稳定性肯定有一定的影响。

如果是成百上千的服务都靠手动操作,我估计运维人员或技术人员会疯掉的。

针对以上问题,commonservice-config服务端和业务微服务分别做了相关的配置,服务端负责将git(svn或本地文件系统)中存储的配置文件进行配置化(我们使用的是本地配置方案,方便直接将配置文件更新到linux上),

业务微服务通过配置从服务端配置中心获取相关配置,如果配置文件变动了,通过刷新业务微服务的方式,将最新的配置信息获取。

spring cloud Bus通过一个轻量级消息代理连接分布式系统的节点。这可以用于广播状态更改(如配置更改)或其他管理指令。

接下来,我们就来实施通过spring cloud Bus方案,动态刷新服务端配置,具体步骤如下:

commonservice-config服务配置可以参考之前的链接:

业务微服务配置(以honghu-member-servcie会员服务为例):

<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://honghu:123456@localhost:8761/eureka/  

  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>  

查看注册中心,commonservice-config、honghu-member-service服务是否已经注册成功

访问一下profile,获取profile对应的配置信息(原配置):

访问http://localhost:7071/profile ==》 访问结果:123456

修改config配置中心的配置文件,将profile=123456修改为honghu123456

再次访问http://localhost:7071/profile ==》 访问结果:123456

使用spring cloud bus 刷新方案(使用post man测试工具进行测试)

http://localhost:7071/bus/refresh

再次访问http://localhost:7071/profile ==》 访问结果:honghu123456

到此,整个commonservice-config配置中心动态刷新方案整理完毕

欢迎大家和我一起学习spring cloud构建微服务云架构,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。

©著作权归作者所有:来自51CTO博客作者sunnyday8903的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP