SpringCloud配置中心

(一)SpringCloudConfig

SpringCloud配置中心_第1张图片

微服务意味着要将单体应用中的业务拆分成一个个子服务 , 每个服务的粒度相对较小 , 因此系统中会出现大
量的服务。
由于每个服务都需要必要的配置信息才能运行 , 所以一套集中式的 , 动态的配置管理设施是必不可少的。
Spring Cloud 提供了 ConfigServer 来解决这个问题 .
Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持 , 配置服务器为各个不同微服
务应用的所有环境提供了一个中心化的外部配置。
SpringCloud Config 分为服务端和客户端两部分。
SpringCloud配置中心_第2张图片

服务端也称为分布式配置中心 , 他是一个独立的微服务应用 , 用来连接配置服务器并为客户端提供获取配置
信息 , 加密 / 解密 信息等访问接口。
客户端则是通过制定的配置中心来管理应用资源 , 以及与业务相关的配置内容 , 并在启动的时候从配置中心
获取和加载配置信息配置服务器默认采用 git 来存储配置信息 , 这样就有助于对环境配置进行版本管理 ,
且可以通过 git 客户端工具来方便的管理和访问配置内容。
SpringCloud配置中心_第3张图片

一个使用微服务架构的应用系统可能会包括成百上千个微服务 , 配置各部相同 , 需求各不相同:
不同环境不同配置:例如数据源在不同的环境(开发 , 测试 , 生产)是不同的 , 可以通过配置中心
运行期间可以动态调整。例如根据各个微服务的负载状况 , 动态调整数据源连接池大小或者熔断阀
, 并且调整时不停止微服务(配置修改后可以自动更新)
SpringCloud配置中心_第4张图片

(二)将生产者打包成jar包

1.先把生产者打包成jar包,先点击clean清空,再点击install打包

SpringCloud配置中心_第5张图片

2.打包完成之后架包会出现你项目的targe的目录下

SpringCloud配置中心_第6张图片

 3.把架包复制到桌面上,按住shift快捷键,右击空白桌面,出现在此处打开powershell窗口

SpringCloud配置中心_第7张图片

 4.在窗口输入java -jar 架包名称 点击回车 启动运行

SpringCloud配置中心_第8张图片

 访问生产者界面

SpringCloud配置中心_第9张图片

(三)新建客户端模块 

1.新建一个SpringBoot项目,作为客户端

SpringCloud配置中心_第10张图片

2.在Nacos中配置一个客户端服务

SpringCloud配置中心_第11张图片

SpringCloud配置中心_第12张图片

3 .在父类模块中引入nacos-config和bookStrap依赖


  com.alibaba.cloud
  spring-cloud-starter-alibaba-nacos-config



  org.springframework.cloud
  spring-cloud-starter-bootstrap

4.创建application.yml文件和bootstrap.yml文件

注:文件名不可乱写,必须是application和bootstrap

SpringCloud配置中心_第13张图片

 bootstrap.yml配置

server:
  #项目端口号(boostrap.yml中配置后,可在application.yml中不配置)
  port: 8083

#spring:
#  application:
#    # 应用名对应nacos配置中心的Data Id
#    name: nacos-config-client
#  cloud:
#    nacos:
#      #指定nacos注册中心地址(boostrap.yml中配置后,可在application.yml中不配置)
#      discovery:
#        server-addr: 127.0.0.1:8848
#      config:
#        #不填写默认就是项目的应用名
#        prefix: ${spring.application.name}
#        #指定nacos配置中心地址
#        server-addr: 127.0.0.1:8848
#        #指定配置文件后缀名
#        file-extension: yml
#        #这里需要注意namespace的配置不是使用名称,而是使用Namespace的ID。
#        #namespace: 3a74eaaa-031c-4cae-9441-3c159febeb79
#        #要导入的其它配置文件的data-id,多个之间使用逗号分隔
#        shared-dataids: redis-config.yml
#        refreshable-dataids: redis-config.yml

spring:
  application:
    # 会自动根据服务名拉取data-id对应的配置文件.如果data-id跟服务名不一致 就需要手动指定data-id
    # 跟服务名相同的data-id的配置文件,称之为默认的配置文件
    # 除了默认的配置文件,其他配置文件必须写上后缀
    name: config-client
  cloud:
    nacos:
      discovery: #注册中心
        server-addr: 127.0.0.1:8848
        # username: nacos
        # password: nacos
      config: #配置中心
        prefix: ${spring.application.name}
        #指定nacos配置中心地址
        server-addr: 127.0.0.1:8848
        file-extension: yml # 使用的 nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties
        namespace: 3a74eaaa-031c-4cae-9441-3c159febeb79  # 使用的 nacos 的命名空间,默认为 null
        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
        # 共享配置集数组
        shared-configs:
          - data-id: redis-config.yml
            group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
            refresh: true # 是否自动刷新配置,默认为 false

 5.Controller注入 

package com.yk.configclient;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SuppressWarnings("all")
@RefreshScope
public class TestController {

    @Value("${email.host}")
    private String host;

    @Value("${email.username}")
    private String username;

    @Value("${email.password}")
    private String password;

    @Autowired
    private ConfigClientApplication.EmailProperties properties;

    @Value("${redis.host}")
    private String redisHost;

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

    @RequestMapping("/test01")
    public String test01(){
        StringBuffer sb = new StringBuffer();
        sb.append("host:"+host);
        sb.append("username:"+username);
        sb.append("password:"+password);
        sb.append("properties:"+properties);
        sb.append("host:"+redisHost);
        sb.append("port:"+redisPort);
        return sb.toString();
    }

}

6.在客户端启动类中添加@EnableDiscoveryClient注解

并写一个方法,在Controller注入这个方法

package com.yk.configclient;

import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Configuration;

@SpringBootApplication
@EnableDiscoveryClient
@SuppressWarnings("all")
public class ConfigClientApplication {

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


    @Configuration
    @Data
    @ConfigurationProperties(prefix = "email")
    public class EmailProperties{
        private String host;
        private String username;
        private String password;

    }


}

 

 

(四)远程配置读取

1.在nacos中加一个配置

SpringCloud配置中心_第14张图片

SpringCloud配置中心_第15张图片 

 2.在bootstarp.yml配置中配置读取路径

SpringCloud配置中心_第16张图片

 3.在controller中注入属性

SpringCloud配置中心_第17张图片

 4.配置两个不同命名空间分支

SpringCloud配置中心_第18张图片

 SpringCloud配置中心_第19张图片

 

5.在配置列表中将两个配置克隆给dev和test分支,并编辑把TEXT配置格式改成YML配置格式

SpringCloud配置中心_第20张图片

 

SpringCloud配置中心_第21张图片

 SpringCloud配置中心_第22张图片

 SpringCloud配置中心_第23张图片

 

6.把命名空间ID复制到namespace上,它环境就会改成相应的配置环境

SpringCloud配置中心_第24张图片

 SpringCloud配置中心_第25张图片

注:运行结果

 

 

 

 (五)共享配置+环境

1.把config-client打包成jar包

SpringCloud配置中心_第26张图片

 2.运行这个jar,粘贴后面这行语句上去运行

SpringCloud配置中心_第27张图片

 java -jar xx.jar --spring.cloud.nacos.config.namespace=命名空间ID

你可能感兴趣的:(spring,cloud,eureka,后端)