Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vakinge/jeesuite-config
简约而不简单功能强大的配置中心。部署简单、支持多环境多版本配置管理。支持全局配置、多应用共享配置、配置加密、配置实时同步、spring/springboot无缝对接,细粒度权限控制、安全过滤等功能
https://github.com/vakinge/jeesuite-config
apollo configcenter configuration disconf distributed-systems spring-boot
Last synced: 2 months ago
JSON representation
简约而不简单功能强大的配置中心。部署简单、支持多环境多版本配置管理。支持全局配置、多应用共享配置、配置加密、配置实时同步、spring/springboot无缝对接,细粒度权限控制、安全过滤等功能
- Host: GitHub
- URL: https://github.com/vakinge/jeesuite-config
- Owner: vakinge
- License: apache-2.0
- Created: 2017-09-11T14:07:37.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-14T20:41:28.000Z (about 2 years ago)
- Last Synced: 2024-10-01T17:06:22.714Z (3 months ago)
- Topics: apollo, configcenter, configuration, disconf, distributed-systems, spring-boot
- Language: Java
- Homepage: http://www.jeesuite.com/
- Size: 1.94 MB
- Stars: 47
- Watchers: 4
- Forks: 32
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 介绍
## 为什么要造轮子?
之前试用过几个开源的配置中心(disconf、Apollo、diamond以及Spring Cloud Config),各有弊端或者是不满足我们的需求(譬如部署复杂、功能太复杂、不支持全局配置、不支持敏感配置加密,对springboot支持不友好,界面不友好或者无界面等等)。所以从2016年开始有了一个初级版本,经过三年生产环境实际需求不断完善于是就有了这个开源项目。## 主要功能清单
1. 支持多环境、多版本配置管理
1. 支持全局配置
2. 支持配置文件(properties,yaml,xml)、配置项、json配置支持
3. 支持加密配置(server自动加密,client自动解密)
4. 支持spring、springboot无缝对接
5. 支持环境+项目维度精细化权限(只读/读写)控制
6. 支持http和zookeeper方式配置实时同步
7. 支持查看配置历史版本、一键回滚、版本对比
8. 安全功能支持:可选开启安全ip功能与内网拉取配置限制
9. 多业务组/部门数据隔离
10. 支持集群部署## 特点
- 轻量级:无需任何中间件(http方式下发同步)即可运行
- 代码简单:二开成本低
- 安全性高:除了配置加密功能外,还提供多种拉取配置安全策略# 服务端部署
### 下载项目```
git clone https://gitee.com/vakinge/jeesuite-config.git
```## 编译项目
```
mvn clean package -DskipTests=true
```**最终生成部署包为:**jeesuite-config-server/target/jeesuite-config-server.jar
## 创建数据库表
```
CREATE DATABASE IF NOT EXISTS `configcenter` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
```执行建表脚本:db.sql
## 关键配置说明(启动前请自行修改各个环境的配置)
```
#数据库配置
db_host=127.0.0.1
db_username=root
db_password=123456#是否允许外网拉取配置(白名单机制生效)
api.extranet.enabled=true
#敏感配置是否强制加密
sensitive.config.force.encrypt=false#开启自动缓存(依赖redis)
jeesuite.mybatis.cacheEnabled=true
jeesuite.cache.mode=standalone
jeesuite.cache.servers=127.0.0.1:6379
jeesuite.cache.password=123456
jeesuite.cache.database=0#开启共享session(集群部署必须)
security.cache.storage-type=redis
security.cache.servers=127.0.0.1:6379
security.cache.password=123456
security.cache.database=1
```## 启动
拷贝**jeesuite-config-server.jar** 与 _**application.properties**_在同一目录,springboot会优先加载同一目录下名为_application.properties的配置文件。_```
nohup java -jar jeesuite-config-server.jar > config-server.out 2>&1 &
```[](http://127.0.0.1:8080/admin.html)
admin/admin123
## 操作指引
- 业务组管理:如果需要分多个业务组,各个组需要隔离,请先`添加业务组`;
- 用户管理:添加用户,可以指定业务组,默认密码为手机号后八位;
- profile(环境)管理:可以为每个环境配置配置`同步的zookeeper`以及拉取配置`IP白名单`
- 应用管理:添加应用,会自动生成对应每个环境的token
- 配置管理:配置分全局配置与应用配置,支持配置文件、key-value配置、json配置---
# 应用集成(客户端)## 添加依赖
```
com.jeesuite
jeesuite-config-client
[版本号]```
## 添加配置
在项目增加如下配置:
```
#是否启用配置中心,默认:true
jeesuite.configcenter.enabled=false
#应用名:对应server端的应用配置
jeesuite.configcenter.appName=account
jeesuite.configcenter.base.url=http://configserver:8080
#当前环境
jeesuite.configcenter.profile=dev
#拉取配置版本,默认:latest
jeesuite.configcenter.version=latest
#是否忽略全局配置,默认:false
jeesuite.configcenter.global-ignore=false
#拉取配置认证的token
jeesuite.configcenter.token=
#同步方式,默认:http
jeesuite.configcenter.sync-type=zookeeper
# 同步间隔,同步方式为:http时生效
jeesuite.configcenter.sync-interval-seconds=30
```>通过JVM参数外部设置配置方式
```
-Djeesuite.configcenter.profile=dev
```>docker外部设置配置方式
```
-e jeesuite.configcenter.profile="dev"
```>springboot项目增加以上配置即可,spring项目还需要做如下修改:
1. 去掉原加载配置相关配置
2. 新增配置```xml
classpath*:application.properties
```
## 一些用法
### 配置优先级
1. 应用本地配置 > 远程应用配置 > 远程全局配置
2. 配置中心配置`jeesuite.configcenter.remote-config-first=true`可以启用远程配置覆盖本地配置### 配置实时生效
配置变更后会实时下发到应用,可以通过以下方式实时读取最新配置
1. 在代码中使用`ResourceUtils`实时读取
2. 依赖注入`Environment`,在代码中实时读取
3. 实现`ConfigChangeHanlder`接口,自定义刷新逻辑---
```java
@Controller
@RequestMapping(value = "/sms")
public class AuthCommonController implements ConfigChangeHanlder{@Value("${sms.send.open}")
private boolean open = false;@Override
public void onConfigChanged(Map changedConfigs) {
if(changedConfigs.containsKey("sms.send.open")){
open = Boolean.parseBoolean(changedConfigs.get("sms.send.open").toString());
}
}
}
```### 配置忽略
正常情况应用的配置为全局配置与应用自身配置合并的结果,如果不需要某些全局配置项目如下配置即可
```
db.maxActive=[Ignore]
```#### 部分页面截图(基于`layui`构建)
##### 新建配置
![输入图片说明](https://images.gitee.com/uploads/images/2019/0612/162039_66a74f81_12388.png "新增配置.png")
##### 查看配置
![输入图片说明](https://images.gitee.com/uploads/images/2019/0612/162551_55f1292e_12388.png "查看配置.png")
##### 用户权限管理
![输入图片说明](https://images.gitee.com/uploads/images/2019/0612/163124_86171edc_12388.png "用户权限.png")