(四)Spring Cloud之config注册中心

SpringCloud-config

配置中心:
遇到了什么问题?
    在微服务群下,一个服务往往有多个实例,同一个服务下的多个实例中配置内容都是一样的.
    当配置更新时,需要停止所有的实例,并一一修改配置,再重启.这个操作相当繁琐.
哪个技术可以解决这个问题?
    将配置文件从服务实例中抽离.
    SpringCloud-config:
    Nacos
    file: 独立的数据文件
    redis
这个技术如何使用?
    1.在码云中创建仓库添加配置文件
    2.创建config服务端,并连接gitee码云,从码云中获取配置信息
    3.在微服务中导入config的客户端依赖,从config的服务端获取最新的配置信息

1.在码云中创建仓库并添加文件

注意: 
    1.创建一个文件夹,并添加配置文件(在码云中不能创建空文件夹和空文件)
    2.添加完配置文件后,将仓库改为公开状态

2.搭建config服务端

2.1 导入依赖

<dependencies>
    <!-- eureka客户端 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <!-- config的服务端 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
    <!-- actuator: 监控 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

2.2 添加配置

server:
  port: 8888
spring:
  application:
    name: config-service
  cloud:
    config:
      server:
        git: #配置存储信息的Git仓库
#          username: 
#          password: 
          uri: https://gitee.com/huahua/huahua2a-config.git  # 仓库地址
          clone-on-start: true # 启动时直接从gitee拷贝数据
          search-paths: config # 搜索目录
          default-label: master # 默认的分支
      label: master #分支信息
#management:
#  endpoints:
#    web:
#      exposure:
#        include: bus-refresh  # config服务端开发端口,通过post访问
#      base-path: /actuator
#顶格放
eureka:
  client:
    service-url:
      #      defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka,http://127.0.0.1:10088/eureka
      defaultZone: http://127.0.0.1:10086/eureka
  instance: # 在Eureka中显示服务的ip地址
    ip-address: 127.0.0.1 # 配置服务器ip地址
    prefer-ip-address: true # 更倾向于使用ip,而不是host名
    instance-id: ${eureka.instance.ip-address}:${server.port} # 自定义实例的id

2.3 编写引导类开启支持

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

/**
 * @Author: xushuai
 * @name:ConfigApp
 * @Date:2023/7/21 16:16
 */
@SpringBootApplication
// 开启config服务端支持
@EnableConfigServer
public class ConfigApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApp.class,args);
    }
}

2.4 启动并测试

访问服务端方式: 浏览器
    配置文件名: userservice-dev.yml
    http://localhost:8888/userservice/dev
    http://localhost:8888/userservice-dev.yml

3.搭建客户端

3.1 导入依赖

<!--配置中心的客户端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>

3.2 编写配置

# 引导配置文件,项目启动时最先被加载
server:
  port: 6001
spring:
  application:
    name: config-client-service
  cloud:
    config: #Config 客户端配置
      uri: http://localhost:8888 #配置中心地址
      label: master #分支名称
      name: userservice #配置文件名称
      profile: dev #启用配置后缀名称
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
  instance: # 在Eureka中显示服务的ip地址
    ip-address: 127.0.0.1 # 配置服务器ip地址
    prefer-ip-address: true # 更倾向于使用ip,而不是host名
    instance-id: ${eureka.instance.ip-address}:${server.port} # 自定义实例的id

3.3 测试


/**
 * @Author: huahua
 * @name:ClientController
 * @Date:2023/7/21 16:25
 */
@RestController
@RequestMapping("/client")
public class ClientController {

    @Value("${myattr}")
    private String myattr;
    // 读取外部的配置信息
    @Value("${str}")
    private String str;
    @Value("${str2}")
    private String str2;
    @RequestMapping("/attr")
    public String attr(){
        return myattr;
    }

    @RequestMapping("/str")
    public String str(){
        return str+" : "+str2;
    }
}

然后访问就可以看到我们的配置是从gitee上拉取的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值