[文档系列文章说明]: 该类型的文章是对项目使用进行说明.
代码地址: https://github.com/lvxingzhi/stcconfig
概述
感谢使用stcconfig分布式动态配置中心, 为了更好地使用相关功能, 请按顺序阅读如下内容
stcconfig能做什么?
stcconfig 分布式动态配置中心包含模块: stcconfig-server, stcconfig-client, stcconfig-web, demo-client stcconfig-server: 配置管理中心, 管理相关数据, 维护zookeeper相关节点, 提供对外API, 支持配置文件下载 stcconfig-client: 配置客户端, 项目引入后可通过注解动态注入配置, 配置更新后实时更新配置文件, 参数值 stcconfig-web: 配置管理WEB端, 通过UI方式管理环境,项目,配置文件
概念说明
环境: 常见的项目开发部署通常包括多环境, 环境类型帮助定义区分不同的环境去使用 项目: 以开发的项目模块为单位,可用于区分不同系统间的配置文件 配置: 即配置文件元数据
适用范围
如果你的项目基于Spring/Spring boot/Spring cloud, 那么就可以使用stcconfig进行配置的管理
架构图
ZK节点一览 1 2 3 4 5 6 /stcconfig -- 根节点 /stcconfig/env --环境根节点 /stcconfig/env/x --环境节点 /stcconfig/env/x/project --项目根节点 /stcconfig/env/x/project/x --项目节点 /stcconfig/env/x/project/x/y --配置节点
配置节点元数据 1 2 3 4 {"data":"1", "fileName":"app.properties", "path":"http://localhost:8100/client/getConfigFile?path=/stcconfig/env/1/project/1/1", "version":1}
服务端类关系图
客户端类关系图
开始 以下步骤将帮助你使用stcconfig
1. 环境准备 1 2 3 4 JDK: 1.8+ Mysql: 5+ Spring: 3+ Maven: 3+
2. 下载源码 从Github上下载
1 git clone https://github.com/lvxingzhi/stcconfig.git
3. 添加必要的持久化库表(MYSQL) 1 2 路径: stcconfig-server/src/main/resources/SQL.sql 执行初始化脚本
4. 安装zookeeper
启动服务端 1. 修改参数 服务端参数本地化配置(数据库,ZK)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 server.port = 8100 server.context-path=/ #spring spring.datasource.name=stcconfig spring.datasource.url=jdbc:mysql://127.0.0.1:3306/stcconfig?serverTimezone=GMT%2B8&useUnicode=true&&characterEncoding=UTF-8&&useSSL=false&allowPublicKeyRetrieval=true spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=admin spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # mybatis mybatis.mapper-locations=classpath:/mapper/*.xml mybatis.type-aliases-package=cn.notenextday.stcconfigserver.dto mybatis.configuration.map-underscore-to-camel-case=true #stcconfig stcconfig.server.url=localhost stcconfig.server.port=8100 #zookeeper #ZookeeperClientUtil单例配置类 --ZK配置去Util中修改
2. 启动 执行: StcconfigServerApplication
1 2 启动成功日志: [stcconfig][server]启动成功
启动WEB端 1. 修改参数 1 ServerUrlConstant 配置类中BASE_URL 改为服务端的地址和端口
2. 启动 执行: StcconfigWebApplication
1 2 启动成功日志: 2021-12-17 14:20:37.081 INFO 16200 --- [ main] c.n.s.StcconfigWebApplication : Started StcconfigWebApplication in 2.182 seconds (JVM running for 2.936)
启动DEMO-CLIENT测试项目 1. 添加stcconfig相关配置 项目application.properties中添加如下配置(根据真实环境修改相应配置)
1 2 3 4 5 6 7 8 9 10 11 12 server.port = 8102 server.context-path=/ #stcconfig 配置 ## 环境ID server.stcconfig.envId=1 ## 项目ID server.stcconfig.projectId=1 ## zookeeper地址 server.stcconfig.zookeeperUrl=127.0.0.1:2181 ## resources目录下配置文件下载路径,默认stcconfig server.stcconfig.directory=myconfig
2. 启动DEMO-CLIENT(引入stcconfig-client,可发布相应的maven包) 执行: DemoClientApplication
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 启动成功日志 [stcconfig-client][2021-12-17 14:22:57.975][main-EventThread][INFO][c.n.s.u.ZookeeperClientUtil][lambda$init$0:146][] - [stcconfig][client][zookeeper] 服务连接成功 [stcconfig-client][2021-12-17 14:23:01.026][main][WARN][c.n.s.m.PullConfigFileManage][pullConfigFile:106][] - [stcconfig][client]下载配置文件:/C:/work/workspace/stcconfig/demo-client/target/classes/myconfig/app.properties [stcconfig-client][2021-12-17 14:23:01.141][main][INFO][c.n.s.u.FileReadToTypeUtil][properties2Map:56][] - [stcconfig][client] properties读取配置: name=韩梅梅1 [stcconfig-client][2021-12-17 14:23:01.142][main][WARN][c.n.s.m.PullConfigFileManage][pullConfigFile:106][] - [stcconfig][client]下载配置文件:/C:/work/workspace/stcconfig/demo-client/target/classes/myconfig/app2.properties [stcconfig-client][2021-12-17 14:23:01.174][main][INFO][c.n.s.u.FileReadToTypeUtil][properties2Map:56][] - [stcconfig][client] properties读取配置: name=韩梅梅2 [stcconfig-client][2021-12-17 14:23:01.376][main][INFO][c.n.s.m.PullConfigFileManage][lambda$init$0:89][] - [stcconfig][client]赋值,fieldName:name, value:韩梅梅1 [stcconfig-client][2021-12-17 14:23:01.376][main][INFO][c.n.s.m.PullConfigFileManage][lambda$init$0:89][] - [stcconfig][client]赋值,fieldName:age, value:null [stcconfig-client][2021-12-17 14:23:01.379][main][INFO][c.n.s.m.PullConfigFileManage][lambda$init$0:89][] - [stcconfig][client]赋值,fieldName:name, value:韩梅梅2 [stcconfig-client][2021-12-17 14:23:01.379][main][INFO][c.n.s.m.PullConfigFileManage][lambda$init$0:89][] - [stcconfig][client]赋值,fieldName:age, value:null [stcconfig-client][2021-12-17 14:23:01.379][main][INFO][c.n.s.m.PullConfigFileManage][init:92][] - [stcconfig][client]测试赋值是否成功: demoBean.name=韩梅梅1
应用中的使用方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 @Component public class DemoClientBean { @StcconfigValue(key = "name", fileName = "app2.properties") private String name; @StcconfigValue(key = "age", fileName = "app4.yaml") private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
使用注解@StcconfigValue注入相应配置
参数 key: 配置文件中的key值 参数 fileName: 配置文件名称
WEB管理 添加/修改环境
添加/修改项目
添加/修改配置