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 微服务网关搭建
Spring Cloud Config 分布式配置中心使用教程