SpringCloud之配置中心

前言:想将项目放入到服务器内跑起来,此处用到配置中心SpringCloud Config;

一、概念

SpringCloud之配置中心_第1张图片

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

SpringCloud之配置中心_第2张图片

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

SpringCloud之配置中心_第3张图片

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

二、将项目打包出去

1、先将父项目内导入的dto依赖项目导出

SpringCloud之配置中心_第4张图片

2、先将父项目导出

将pom文件中的认子注掉:

SpringCloud之配置中心_第5张图片

导包:

SpringCloud之配置中心_第6张图片

3、将子类生产者导包

将此jar包拿出

SpringCloud之配置中心_第7张图片

4、就可在cmd内运行

SpringCloud之配置中心_第8张图片

三、解决

1、问题:多个项目依赖与一些配置,若一个配置改变,还要去改变项目的源码

2、解决:使用配置中心(SpringCloud config)

nacos config

对比:

SpringCloud之配置中心_第9张图片

3、演示

①、在父项目内导入依赖

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

将认子放开:

SpringCloud之配置中心_第10张图片

②、新建一个客户端项目

SpringCloud之配置中心_第11张图片

SpringCloud之配置中心_第12张图片pom文件:




    4.0.0
    com.lv
    config-client
    0.0.1-SNAPSHOT
    config-client
    Demo project for Spring Boot

   
       cloud01
       org.lv
       1.0-SNAPSHOT
   


    
        
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.4.1
                
                    com.lv.configclient.ConfigClientApplication
                
                
                    
                        repackage
                        
                            repackage
                        
                    
                
            
        
    


③、新建配置

注意:nacos服务中的application.properties文件中,连接数据库的密码需要注意

SpringCloud之配置中心_第13张图片

email: 
    host: qq.com
    username: root
    password: 123456

SpringCloud之配置中心_第14张图片

SpringCloud之配置中心_第15张图片

④、从项目中读取配置中心的内容

新建application.yml与bootstrap.yml文件

SpringBoot默认支持properties和YAML两种格式的配置文件。
bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等
application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。
bootstrap.yml 先于 application.yml 加载

在父类导入依赖:


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

bootstrap.yml文件:

server:
  port: 8083
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: f1896568-xxxx-45d8-8a93-a64c5bcc22ff ?# 使用的 nacos 的命名空间,默认为 null
        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP共享配置集数组
#        shared-configs:
#            - data-id: shared-dataId-01.yaml
#              group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
#                  refresh: true # 是否自动刷新配置,默认为 false@RefreshScope 实现配置实时更新

在此启动类注入:

@EnableDiscoveryClient
@SuppressWarnings("all")

// 自动填充
@Configuration 
@Data   
@ConfigurationProperties(prefix = "email")
    public class EmailProperties{
        private String host;
        private String username;
        private String password;
    }

新建测试类,拿取数据:

将配置中心直接拿取到application.yml文件

package com.lv.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.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SuppressWarnings("all")
//刷新配置
@RefreshScope
public class TestController {

//    yml注入
    @Value("${email.host}")
    private String host;
    @Value("${email.username}")
    private String username;
    @Value("${email.password}")
    private String password;

//    注入EmailProperties
    @Autowired
    private ConfigClientApplication.EmailProperties properties;

    @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); return sb.toString(); } }

SpringCloud之配置中心_第16张图片

⑤、远程配置读取

Ⅰ、新增配置中心

SpringCloud之配置中心_第17张图片

Ⅱ、共享配置集数组

bootstrap.yml:

#        共享配置集数组
        shared-configs:
            - data-id: config-redis.yml
              group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
              refresh: true # 是否自动刷新配置,默认为 false@RefreshScope 实现配置实时更新

SpringCloud之配置中心_第18张图片

Ⅲ、测试类TestController

    @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(); }

SpringCloud之配置中心_第19张图片

⑥、切环境

找到命名空间:

SpringCloud之配置中心_第20张图片

新建几个空间:

SpringCloud之配置中心_第21张图片

将两个配置列表分配到测试和开发的空间:

SpringCloud之配置中心_第22张图片

SpringCloud之配置中心_第23张图片

注:需要到空间里将克隆的文件改成yml文件

SpringCloud之配置中心_第24张图片

需要哪个空间就填入哪个命名空间id

namespace: f1896568-xxxx-45d8-8a93-a64c5bcc22ff # 使用的 nacos 的命名空间,默认为 null

SpringCloud之配置中心_第25张图片

SpringCloud之配置中心_第26张图片运行为开发环境:

SpringCloud之配置中心_第27张图片

⑦、共享位置+环境

将config-client项目导出:

SpringCloud之配置中心_第28张图片

拿出jar包:

SpringCloud之配置中心_第29张图片

运行jar包:

SpringCloud之配置中心_第30张图片

将此yml文件取消,不定死

namespace: f1896568-xxxx-45d8-8a93-a64c5bcc22ff # 使用的 nacos 的命名空间,默认为 null

直接到文件运行执行以下语句,

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

SpringCloud之配置中心_第31张图片

启动成功:

SpringCloud之配置中心_第32张图片注意:在nacos配置中心的配置内容,不能出现中文,否则报错

本期内容结束~~~~

你可能感兴趣的:(java,spring,cloud,微服务,java,机器学习,hive)