SrpingCloud config 分布式配置中心

Posted wanghy898

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SrpingCloud config 分布式配置中心相关的知识,希望对你有一定的参考价值。

分布式配置中心的作用:

当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置。

原理图:

技术图片

 

 

使用码云环境搭建git服务器端:https://gitee.com/ 

创建一个配置仓库: config-repo 通过 文件→新建文件(如果有线程的yml配置文件则选择上传)

这里以product.yml为例创建几个不同环境下的yml配置文件

技术图片

product.yml里面的内容 :

#数据库配置
spring:
  application:
    name: product
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://127.0.0.1:3306/sell?useUnicode=true&characterEncoding=utf8&useSSL=false
    username: root
    password: why123
    druid:
      # 下面为连接池的补充设置,应用到上面所有数据源中
      # 初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall‘用于防火墙
      max-pool-prepared-statement-per-connection-size: 20
      filters: stat,wall
      use-global-data-source-stat: true
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 配置监控服务器
      stat-view-servlet:
        login-username: admin
        login-password: 123456
        reset-enable: false
        url-pattern: /druid/*
        # 添加IP白名单
        #allow:
        # 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
        #deny:
      web-stat-filter:
        # 添加过滤规则
        url-pattern: /*
        # 忽略过滤格式
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
env:
  product

数据源是基于druid的,其他几个配置文件内容就不一一贴出来了

切回到开发工具(idea/eclipse)

pom里面的配置:

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>wanghy.com.cn</groupId>
    <artifactId>config-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>config-server</name>
    <description>project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
    </properties>

    <dependencies>

        <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>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>$spring-cloud.version</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

application.yml里面配置:

spring:
  application:
    name: config
  #配置远程配置中心
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/xxx/config-repo
          username: 码云账号
          password: 码云密码
          basedir: Users/admin/basedir #本地仓库 从远端git仓库存入的本地地址
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8010

# 允许/bus/refresh接口被外部调用
management:
  endpoints:
    web:
      exposure:
        include: "*"

在启动类中配置:

@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer
public class XXXConfigApplication 

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

启动eureka服务注册中心后再启动 可以看到它已经注册到eureka服务注册中心了

技术图片

 

以上是关于SrpingCloud config 分布式配置中心的主要内容,如果未能解决你的问题,请参考以下文章

《springcloud 二》SrpingCloud Zuul 微服务网关搭建

SpringCloud-分布式配置中心(config)

springcloud config

Spring Cloud Config 分布式配置中心使用教程

第六篇: 分布式配置中心(Spring Cloud Config)

分布式配置中心原理解析!SpringCloud Config 实现分布式配置的整体解决方案