SpringCloud配置中心

(一)SpringCloudConfig

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

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

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

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

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

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

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

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

 访问生产者界面

(三)新建客户端模块 

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

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

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

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--bootstrap依赖-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

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

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

 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("<b>host<b>:"+host);
        sb.append("<b>username<b>:"+username);
        sb.append("<b>password<b>:"+password);
        sb.append("<b>properties<b>:"+properties);
        sb.append("<b>host<b>:"+redisHost);
        sb.append("<b>port<b>:"+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中加一个配置

 

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

 3.在controller中注入属性

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

 

 

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

 

 

 

 

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

 

注:运行结果

 

 

 

 (五)共享配置+环境

1.把config-client打包成jar包

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值