新教E区

 楼主| 发表于 2019-1-29 14:07:32 | 显示全部楼层 |阅读模式
我们使用spring cloud分布式微服务云架构做了b2b2c的电子商务系统,除了架构本身自带的系统服务外,我们将b2b2c的业务服务进行了细粒度拆分,做成了不同的业务微服务。
当我们的业务系统越来越庞大复杂的时候,各种配置也会随之增多。配置文件只要一修改,会对commonservice-config配置中心先停止服务,然后再重新启动,最后使配置生效。
如果服务少,我们可以手动方式来启动,但是对业务和系统的稳定性肯定有一定的影响。
如果是成百上千的服务都靠手动操作,我估计运维人员或技术人员会疯掉的。
针对以上问题,commonservice-config服务端和业务微服务分别做了相关的配置,服务端负责将git(svn或本地文件系统)中存储的配置文件进行配置化(我们使用的是本地配置方案,方便直接将配置文件更新到linux上),
业务微服务通过配置从服务端配置中心获取相关配置,如果配置文件变动了,通过刷新业务微服务的方式,将最新的配置信息获取。
spring cloud Bus通过一个轻量级消息代理连接分布式系统的节点。这可以用于广播状态更改(如配置更改)或其他管理指令。
接下来,我们就来实施通过spring cloud Bus方案,动态刷新服务端配置,具体步骤如下:
1. commonservice-config服务配置可以参考之前的链接:
2. 业务微服务配置(以honghu-member-servcie会员服务为例):
[url=][/url]
<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>  [url=][/url]

yml文件配置:
[url=][/url]
<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>  [url=][/url]

编写一个测试类(MemberController.java),用来获取配置项
[url=][/url]
<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>  [url=][/url]

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配置中心动态刷新方案整理完毕
欢迎大家和我一起学习spring cloud构建微服务云架构,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六

点评

海!外直播 t.cn/RxlBLRZ 禁闻视频 t.cn/RxlbueX 一个社会如果只能靠删除不同看法去维护统一思想的宣传,那就证明这个思想宣传已经到了弱不经风的程度了。看这个就知道..  发表于 2019-2-1 04:07
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|新教e区 ( 鲁ICP备16007390号-1 )

GMT+8, 2019-2-16 18:46 , Processed in 0.078125 second(s), 19 queries , Gzip On.

新教E区

© 2006-2014 新教E区

快速回复 返回顶部 返回列表