SpringCloud 之 分布式配置中心

2020-05-09  本文已影响0人  索性流年

为什么要使用分布式配置中心?

在微服务中,如果使用传统方式管理配置文件,配置文件管理起来非常复杂。

什么是配置中心?

在微服务中使用同一个服务器去管理所有配置文件,能够实现后台可管理,当服务器正在运行的时候,如果配置文件需要改变,可以实现不需要重启服务器,实时更改配置文件信息。

分布式配置中心框架:

阿波罗携程写分布式配置中心有图形界面可管理配置文件信息,配置文件信息存放数据库里面
SpringCloud Config没有后台可管理分布式配置中心,配置文件信息存放在版本控制器里面(git|svn)
使用Zookeeper实现分布式配置中心,持久节点+事件通知

搭建Git环境配置文件

配置文件-.(dev- test、pre、prd)
配置文件命名规范: ctient服务名称(注册中心名称)一版本: yml

image.png

搭建分布式配置中心(Server)

pml.xml 引入依赖

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

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

application.yml 添加配置


###服务注册到eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8100/eureka
spring:
  application:
    ###注册中心应用名称
    name: config-server
  cloud:
    config:
      server:
        git:
          ### git环境地址
          uri: https ://gitee.com/itmayi/config_ 003.git
          ####搜索目录
          search-paths :
            - config
          ###读取分支(master主分支)
      label: master
####端口号
server:
  port: 8888

项目启动类添加 @EnableConfigServer 注解


@SpringBootApplication
@EnableEurekaClient
//将服务作为分布式配置中心
@EnableConfigServer
public class SpringcloudConfigApplication {

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

}

获取配置文件(client)

新建消费者工程pom导入依赖


<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

<!-- actuator监控中心 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

yml配置


#配置会员服务端口号
server:
  port: 8000
#服务别名不区分大小写
spring:
  application:
    name: app-member
  cloud:
    config:
      discovery:
        service-id: config-server
        enabled: true
      profile: dev

eureka:
  client:
    #注册中心地址
    service-url:
      defaultZone: http://localhost:8100/eureka
    #是否需要添加到注册中心
    register-with-eureka: true
    #是否需要检索配置中心信息
    fetch-registry: true

新建IndexService.class


/*
* configCline获取配置文件
* */
@RestController
/*实时刷新配置*/
@RefreshScope
public class IndexService {

    @Value("@{userAge}")
    public String userAge;

    @GetMapping("/getUserAge")
    public String getUserAge(){
        return userAge;
    }
}

手动刷新配置文件调用接口

http://127.0.0.1:8882/actuator/refresh

上一篇下一篇

猜你喜欢

热点阅读