cloud config

2019-11-10  本文已影响0人  我是啵啵

作用 集中管理配置文件
动态 服务不用重启


image.png

创建一个github仓库
在本地克隆下来
gitbush到某一个目录
git clone https://github.com/linjinboqq/microservice-cloud-config.git
将yml推送到git hub

$ cd microservice-cloud-config # 添加到暂存区
 $ git add microservice-config-application.yml # 提交到本地库
 $ git commit -m "first commit" microservice-config-application.yml # 推送到远程库origin 的 master 主分支上 
$ git push origin master

config工程

写pom

<dependencies>
        <!-- Spring Cloud Config配置中心依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>


yml
自己的配置地址
https://github.com/linjinboqq/microservice-cloud-config.git

server:
  port: 5001

spring:
  application:
    name: microservice-config
  cloud:
    config:
      server:
        git: # 远程库的git地址
          uri: https://github.com/linjinboqq/microservice-cloud-config.git

配置类上开启
@EnableConfigServer

测试访问
http://localhost:5001/microservice-config-application-prod.yml
prod 可以改dev 得到不同的配置

测试错误 好像解析出来的配置文件出了问题
问题解决
一直在github上按照控制台提示改yml就行了

image.png

客户端的config配置

流程
在bootstrap.yml 中指定了configserver 就是之前那一个微服务
在configserver 中的yml 中指定了 github 仓库
再通过客户端的bootstrap.yml 其他的配置信息
去找对应的配置

spring:
  cloud:
    config:
      name: microservice-config-application #github上的配置名称,注意没有yml后缀名
      profile: dev    #本次访问的环境配置项
      label: master   #远程库的分支名
      uri: http://localhost:5001 #Config配置中心地址,通过它获取microservice-config-application.yml配置信息

name:是github上的文件名

microservice-config-application #github上的配置名称,注意没有yml后缀名
name: microservice-config-application
两个yml bootstrap 优先级更高
cotroller

package com.mengxuegu.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class ConfigClient {

    @Value("${server.port}")
    private String port;

    @Value("${spring.application.name}")
    private String applicationName;


    @GetMapping("/config")
    public String config() {
        String content = "applicationName: " + applicationName + ", port: " + port;
        System.out.println(content);
        return content;
    }
}

测试:

指定启动的是8080 端口
但加载了github 上的端口之后就变为了4001

image.png

实战

将创建一个Eureka服务与Product商品提供者服务,它们两个微服务的配置信息均从GitHub获取 ,从而实现 统一配置分布式管理,完成多环境的变量

config euraka

模块构建
比之前的
多了一个config 客户端依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>

在yml 中设置之后
就能获取到配置信息 然后加载
profile: prod #本次访问的环境配置项
没有红的 自我保护机制

productconfig

一样的 pom +config
然后 启动类上写@enable eruaka
就能注册到服务端
没啥可说

image.png
上一篇下一篇

猜你喜欢

热点阅读