美文网首页
【七】Spring Cloud config

【七】Spring Cloud config

作者: lemonMT | 来源:发表于2019-03-14 16:01 被阅读0次

    作为分布式配置中心的选择之一,可以简单了解一下, 可以首选携程阿波罗或则阿里的nacos。

    1. 分布式配置中心单机版搭建

    1.1 新建立项目,然后增加依赖

    <!--增加config服务中心依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-server</artifactId>
            </dependency>
    

    1.2 增加配置文件配置

    eureka:
      client:
        service-url:
          defaultZone: http://user:user@demo-springcloud-eureka-one:8761/eureka/
      instance:
        prefer-ip-address: true
    
    server:
      port: 8888
    spring:
      application:
        name: demo-springcloud-config
      cloud:
        config:
          server:
            git:
              uri: https://github.com/hualongchen/SpringcloudConfig
              search-paths: respo
              username: xxxxxxxxx
              password: xxxxxxxxx
    

    1.3 增加主类配置代码

    //打开配置中心服务
    @EnableConfigServer
    @SpringBootApplication
    public class DemoSpringcloudConfigApplication {
    
       public static void main(String[] args) {
           SpringApplication.run(DemoSpringcloudConfigApplication.class, args);
       }
    
    }
    

    1.4 进行访问体验

    • /{application}/{profile}[/{label}]
    • /{application}-{profile}.yml
    • /{label}/{application}-{profile}.yml
    • /{application}-{profile}.properties
    • /{label}/{application}-{profile}.properties

    application : 服务的名字
    profile: 对应的环境
    label:对应的分支,默认为master

    第一个: http://localhost:8888/config-client/dev/master

    {
        "name": "config-client",
        "profiles": [
            "dev"
        ],
        "label": "master",
        "version": "00d32612a38898781bce791a4a845e60a7fbdb4e",
        "state": null,
        "propertySources": [
            {
                "name": "https://github.com/hualongchen/SpringcloudConfig/respo/config-client-dev.properties",
                "source": {
                    "foo": "foo version 2",
                    "democonfigclient.message": "hello spring io"
                }
            }
        ]
    }
    

    第二个: http://localhost:8888/config-client-dev.yml

    image.png

    gitlab的配置文件如下

    https://github.com/hualongchen/SpringcloudConfig/blob/master/respo/config-client-dev.properties

    image.png

    2.分布式配置中心客户端

    2.1 增加项目的依赖

     <!--配置中心-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
    

    2.2 增加配置文件配置

    spring:
      application:
        name: config-client
      cloud:
          config:
            uri: http://localhost:8888/
            profile: dev
            label: master
    
    eureka:
      client:
        service-url:
          defaultZone: http://user:user@demo-springcloud-eureka-one:8761/eureka/
      instance:
        prefer-ip-address: true
    server:
      port: 8866
    
    #开启断路器
    feign:
      hystrix:
        enabled: true
    

    2.3 增加主类的配置代码

    //发现服务注册中心,将服务进行注册
    @EnableDiscoveryClient
    //开启feign能力
    @EnableFeignClients
    //开启断路器功能
    @EnableHystrix
    @SpringBootApplication
    @RefreshScope
    public class DemoSpringcloudServiceOrdereApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoSpringcloudServiceOrdereApplication.class, args);
        }
    }
    

    2.4 增加配置类代码测试,同时增加了刷新注解

    @RefreshScope ////指示Config客户端在服务器参数刷新时,也刷新注入的属性值
    @RestController
    public class OrderController {
        
        @Value("${foo}")
        private String foo ;
    
    
        @RequestMapping("/config")
        public Object getFoo(){
    
            return  foo ;
        }
    }
    

    2.5代码效果如下

    image.png

    3.遇到的一些问题

    3.1 端口问题

    如果不是8888端口,会导致其他项目读取不到配置文件的信息,原因如下:
    项目启动的时候,会优先读取bootstrap.yml这个配置文件, 如果没有,再读取application.yml这个文件。

    所以,解决方案如下:

    • 修改配置文件,改为bootstrap.yml文件。
    • 将config-server的端口改为8888.

    3.2 如果集群化与如何配置多个git地址

    • 集群,直接采用application-name一致,然后统一加入eureka集群中即可。

    git地址: 采用同一个git,不同的目录分组进行操作。

    相关文章

      网友评论

          本文标题:【七】Spring Cloud config

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