Skip to content

高性能配置读取服务器,为Yaml配置文件提供JSON RESTful读取接口

License

Notifications You must be signed in to change notification settings

wusuopubupt/cfg-center

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

配置管理

目标

配置管理中心的目标是将我式的所有运维、业务相关的配置集中在一处进行管理。 这样做的好处主要有以下几点:

  1. 集中配置,减少重复、冲突配置。
  2. 简化多个环境,多套部署的配置管理。

原理

cfg-center类似于etcd、zookeeper之类的配置管理中心服务,主要区别如下:

  1. 采用直白的yaml配置文件作为配置存储,方便现场部署时进行修改和debug。
  2. 代码量少,超轻量级设计。
  3. inotify关注配置修改,保证高性能。
  4. RESTful请求接口,JSON响应格式,直白易操作。
  5. 不依赖任何非必须系统库。

部署

部署目录结构如下:

├── bin                     # 主程序和运维脚本
│   ├── cfg-center
│   ├── restart.sh
│   ├── start.sh
│   └── stop.sh
├── conf_data               # cfg-center的配置数据
│   ├── ...(参见下面)
│   └── ...
└── log                     # 日志目录
    └── cfg-center.log

其中conf_data目录作为配置文件的唯一存储区域,目录结构如下

└── conf_data               # cfg-center的配置数据目录
    ├── aws.yaml            # 配置文件,Amazon环境                       
    ├── azure.yaml          # 配置文件,Azure环境            
    ├── test1.yaml          # 配置文件,test1环境     
    └── bank.yaml           # 配置文件,XX银行环境       

上述目录将会保存在git中,在开发&测试时直接用命令行工具、浏览器、Java/Python SDK请求即可。

yaml配置如下,后面有示例

模块1:
    配置key: 配置value
    配置key: 配置value
    配置key: 配置value
模块2:
    配置key: 配置value
    配置key: 配置value

配置格式管理规范

cfg-center启动后会采用conf_data目录的配置数据,使用默认端口:2120

假设conf_data/bank.yaml的内容如下:

dummyWorkder:
    slotStatement: select * from A

task-manager:
    serverPort: 9876
    dbURL: "jdbc:mariadb://localhost:3306/TM"
    dbUser: root

我们想要获取bank环境的task-managerdbURL配置, 那么请求 http://cfg-center:port/conf/bank/task-manager/dbURL 将会得到HTTP响应:

"jdbc:mariadb://localhost:3306/TM"

请求http://cfg-center:port/conf/bank/task-manager 将会得到HTTP响应:

{
    acquireIncrement: 1,
    dbPassword: "1qaz",
    dbURL: "jdbc:mariadb://localhost:3306/TM",
    dbUser: "root",
    maxPoolSize: 10,
    minPoolSize: 2,
    serverPort: 9876
}

所以获取配置就是要访问如下URL: http://cfg-center:port/conf/{环境}/{模块}/{yaml中的key}

About

高性能配置读取服务器,为Yaml配置文件提供JSON RESTful读取接口

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 94.1%
  • Shell 5.3%
  • Python 0.6%