请选择 进入手机版 | 继续访问电脑版

#楼主# 2020-3-19

跳转到指定楼层
 我的博客:http://www.hao127.com.cn/,欢迎浏览博客!




SpringCloud基础教程(五)-配置中心热生效和高可用-1.jpg




 上一章 http://hao127.com.cn/#/view/68当中,我们在对Eureka的有了基本的基础认识之上,深入的了解Eureka高可用集群和其他的生产环境中用到的一些配置。本章将开始了解分布式环境下的配置中心。
前言

 在实际的项目运行中,我们会根据实际需求修改配置内容,那么有没有一种方式,能够在不启动服务组件的情况向让配置文件动态的生效呢,Spring Cloud Conifg中提供了一种方式了。当然我们还需要考虑一旦配置服务宕机的话,那么配置客户端是无法获取到配置信息的,所以针对配置服务,我们也希望能提供高可用的服务。
一、配置热生效

 首先我们在客户端(每个开发的微服务)的控制器上添加 @RefreshScope 注解,并在客户端(项目的pom.xml中引入actuator依赖(actuator中包含了/actuator/refresh的api):
@RefreshScope
@RestController
public class ValueController {

    @Value("${k1}")
     String value;

    @GetMapping("/get")
    public String getValue(){
        return value;
    }
}
亲自测试,如果将@RefreshScope注解添加在启动类上,value是不管用的,只有添加在需要热加载的Bean上才生效。

org.springframework.boot
spring-boot-starter-actuator

 修改bootstrap.xml 添加如下配置,表示可以通过手动的刷新改变获取配置信息
management:
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: refresh
 在配置完成之后,我们通过以下的步骤测试热生效:

步骤一:启动Config Server和Config Client项目访问。

步骤二:访问http://localhost:9003/get 返回的结果是 “master-test-v1 ”;

步骤三:修改配置文件ConfigServer-test.properties 内容修改成”k1=master-test-v2“;提交到git仓库

步骤四:访问http://localhost:9003/get 返回的结果依旧是 “master-test-v1 ”;

步骤五:通过POST访问http://localhost:g003/actuator/refresh 访问得到响应【“k1”】,注意这里的版本是2.x系列的springCloud,和1.X系列的接口访问不一样):

SpringCloud基础教程(五)-配置中心热生效和高可用-2.jpg

第六步:再次去访问http://localhost:9003/get 返回的结果变成了是 “master-test-v2 ”;

 通过以上的配置,我们成功的测试了手动的请求可以刷新并动态的加载最新的配置,当然这样还是存在一个缺点,就是需要手动刷新。当然SpringCloud中介绍了使用Bus来通知Spring Cloud Config,后期的文章还需继续生如介绍。



二、高可用

 在上文中,我们的配置的客户端都是通过制定配置Config Server的实例地址方式获取配置信息的,一旦Config Server遇到故障,获取配置信息就会出现故障,SpringCloud同样支持通过高可用的方式解决这样的问题。接下来我们结合Eureka组件,来搭建高可用的配置中心。
2.1 Config Server配置


 在Config Server的项目中添加Eureka的依赖:

org.springframework.cloud
spring-cloud-starter-netflix-eureka-client

 并在ConfigServerApplicaition.Java启动类添加注解@EnableEurekaClient 开启Eureka注册:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplicaition {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplicaition.class, args);
    }
}

 修改Config Server的applicaiton.xml配置:修改端口号和实例Id,启动2个Config Server实例:
server:
  port: 6001
#服务提供方
spring:
  application:
  #服务的名称
    name: server-config-cluster
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/lnxxs/springCloudConfig.git
          password:
          username:
          #git非植
      label: master
      uri: http://localhost:6001/
      enabled: true
      #http安全
  security:
    user:
      name: user
      password: pwd
      #注册的实实例
eureka:
  instance:
    instance-id: config-server1
  client:
    service-url:
    #连接eureka的url
      defaultZone:  http://eureka7001.com:7001/eureka/
 在Eureka的监控中心,我们看到了名称为server-config-cluster的实例有2个,分别是config-server1和

config-server2:

SpringCloud基础教程(五)-配置中心热生效和高可用-3.jpg



2.2、客户端配置


 客户端需要从Eureka获取Config Server的地址,首先在客户端的项目pom.xml中添加Eureka的依赖:

org.springframework.cloud
spring-cloud-starter-netflix-eureka-client

 启动类添加@EnableDiscoveryClient注解,启动开发服务发现的功能,发现Config Server配置服务信息:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableAutoConfiguration
@EnableDiscoveryClient
public class ConfigClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}
 同时在bootstrap.xml洗澡呢Eureka注册中心的地址配置,同时将spring.cloud.config.uri去掉,打开spring.cloud.config.discover.enabled=ture ,并添加spring.cloud.config.service-id为配置服务的spring.application.name= server-config-cluster,具体配置如下:
spring:
  application:
    name: server-client
  cloud:
    config:
        label: master
        profile: test
        #修改uri为 discovery.service-id
        #uri: http://localhost:6001/
        name: ConfigServer
        fail-fast: true
        retry:
          initial-interval: 1000
          max-attempts: 6
          max-interval: 2000
          multiplier: 1.1
        username: user
        password: pwd
        discovery:
          service-id: server-config-cluster
          enabled: true
management:
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: refresh
eureka:
  instance:
    instance-id: config-client
  client:
    service-url:
    #连接eureka的url
      defaultZone:  http://eureka7001.com:7001/eureka/
 通过以上的配置,就可以实现配置中心的高可用。
三、总结

 本章是对配置中心做了深入的介绍,包括配置的热加载和配置服务的高可用,这些都是微服务架构所需要的。Spring Cloud Config功能特别的丰富,不止于此,同时还支持更换git仓库为SVN或者其他的仓库等,有感兴趣的同学可以自行研究。




SpringCloud基础教程(五)-配置中心热生效和高可用-4.jpg

.以就是本期的分享,你还可以关注公众号: 程序员笑笑生,关注更多精彩内容!

SpringCloud基础教程(五)-配置中心热生效和高可用-5.jpg




SpringCloud基础教程(五)-配置中心热生效和高可用-6.jpg




https://mp.weixin.qq.com/s?__biz=Mzg4MDE3NzI1NA==&mid=2247483760&idx=1&sn=66a559f4d318980dc80e7b159176b472&chksm=cf787879f80ff16fd38552cc1ab888e075b9b46faffee65bbd966553f355499761a7cb71220c&token=226159718&lang=zh_CN#rd

https://mp.weixin.qq.com/s?__biz=Mzg4MDE3NzI1NA==&mid=2247483768&idx=1&sn=555a0e53228c596830ca72e22c9cbab1&chksm=cf787871f80ff167b4ceb4d042cced2184f3a0ce82149ccb40b7218beab6c767748c0dcf95c6&token=226159718&lang=zh_CN#rd

https://mp.weixin.qq.com/s?__biz=Mzg4MDE3NzI1NA==&mid=2247483783&idx=1&sn=71aa8383ff49117c60a73c2bcfab5fe0&chksm=cf78788ef80ff198ff034a06cd0e16c868d8545ca63f8cde6a8fa3f345678b51ae8b9a4da1b8&token=226159718&lang=zh_CN#rd

https://mp.weixin.qq.com/s?__biz=Mzg4MDE3NzI1NA==&mid=2247483795&idx=1&sn=7686413496decaa2627aa92321f177a7&chksm=cf78789af80ff18ccf0a33d1a9701ead20000408711db6ee1e581225191b50c8866dc26d6606&token=226159718&lang=zh_CN#rd

https://mp.weixin.qq.com/s?__biz=Mzg4MDE3NzI1NA==&mid=2247483804&idx=1&sn=0db76d3d11adcab12be4b019435ce11e&chksm=cf787895f80ff1831658e45ab654da77bcc6eccda52f41f2a42aac579f9bd9011d4153dbd982&token=226159718&lang=zh_CN#rd

https://mp.weixin.qq.com/s?__biz=Mzg4MDE3NzI1NA==&mid=2247483813&idx=1&sn=61d12c61525bb95b63b60cb77634ed24&chksm=cf7878acf80ff1ba22b914256369a1a07dbb480162ccf65b851bd10d015325278e4e05d4b4cb&token=226159718&lang=zh_CN#rd

更多精彩内容,请期待...

原文地址:https://www.toutiao.com/a6788101587697926668/
转播转播 分享淘帖
回复

使用道具

成为第一个回答人

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

本版积分规则