美文网首页
配置中心

配置中心

作者: 你值得拥有更好的12138 | 来源:发表于2019-06-23 15:23 被阅读0次

    以下概念性的语言均为本人理解,欢迎大佬指出错误,小白希望深入理解请到官网
    Github源码参考:https://github.com/HanJuly/SpringCloudDemo

    为什么需要配置中心

    以下列子引用大佬:配置中心

    • 由于业务的变动,用户在以前进行注册的时候默认的用户名是“小强”,但是新的领导来了,需要把这个改成“小明”。因为,业务的流量还是比较大的,所以,没有办法在白天流量高峰期修改配置文件,进行重启!

    • 此时,就辛苦开发的小哥了,他们需要等到半夜里凌晨三四点的时候,没有流量的时候,小心翼翼的去修改application.properties配置文件,必将系统进行重启。

    • 另外,公司采用的是集群,进行了负载均衡,系统部署在了多台服务器上,那么开发小哥需要一台台的进行修改,小心翼翼的进行修改,生怕出了一点意外!

    • 开发小哥是在忍受不了这种变更了,修改一个配置就需要如此周折的去完成这件事情!忍无可忍,于是像交流群里的一位大神请教,大神指点让他去搜索一下“分布式配置中心”。

    springBoot的配置文件加载优先级

    0.从配置中心加载的配置
    1.命令行中传入参数
    2.bootstrap.propertis
    2.位于当前jar包之的,针对不同{profile}环境的配置文件内容,列如:application-{profile}
    3..位于当前jar包之的,针对不同{profile}环境的配置文件内容,列如:application-{profile}
    4.jar包的application.properties
    5.jar包的application.properties
    6.@PropertySource注解定义的属性
    7.SpringApplication.setDeafaultProperties定义内容

    所以在使用配置中心后,其他的配置都不会生效了。下面我们使用bootstrap.yaml配置github的地址,然后在github保存application.yaml配置

    配置中心搭建

    pom.xml
    <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-server</artifactId>
                <version>2.1.1.RELEASE</version>
            </dependency>
    
    yaml

    在Config端配置仓库地址,并服务化config,让其他服务通过服务名进行调用

    # 公共配置
    spring:
      application:
        name: config-server
      cloud:
        config:
          server:
            native:
            git:
              uri: https://github.com/HanJuly/config-repo
              search-paths: '{application}'
              username: xxxx
              password: xxxxxx
    

    这的search-paths目录是使用配置中心的客户端的应用名,所以请在github上创建对
    应的文件夹如下:


    image.png image.png

    服务化配置中心

    eureka:
      client:
        service-url:
          defaultZone: http://127.0.0.1:8500/eureka/
    
    

    在启动类上加上注解

    
    @EnableConfigServer
    @SpringBootApplication
    public class ConfigServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ConfigServerApplication.class, args);
        }
    
    }
    

    到此配置中心就搭建完成,

    客服端搭建

    yaml

    首先把以前的application.yaml的配置放到对应的github目录下。


    image.png

    在客户端项目resource上删除原来的application.yaml文件改为bootstrap.yaml如下


    image.png
    yaml中这么配置
    # eureka 主机/端口配置 start
    spring:
      application:
        name: hello-consumer  #与github地址相同
      profiles:
        active: dev
      cloud:
        config:
          profile: ${spring.profiles.active}
          label: master   #github的分支
          discovery:
            enabled: true
            service-id: config-server  # 配置中心的服务名
            username: HanJuly
            password: github@9569155
          fail-fast: true #快速失败
    

    pom.xml中配置

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-config -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
    

    验证

    先启动注册中心,然后启动配置中心,最后启动客户端。

    配置中的日志


    image.png

    当你看到这个时,配置文件被拉到本地,你可以到这个路径下查看。yaml的加载是在配置中心加载完了,然后再发送对应的客户端服务。如果yaml有错,那么就会在配置中心报错。

    客户端的日志


    image.png

    相关文章

      网友评论

          本文标题:配置中心

          本文链接:https://www.haomeiwen.com/subject/ggnvqctx.html