______ _ ______ |_ _ `. (_) .' ___ | | | `. \ __ _ __ / .' \_| | | | |[ | | | [ || | _| |_.' / | \_/ |, | |\ `.___.'\ |______.' '.__.'_/[___]`.____ .'
在软件开发中随着业务的须要, 需求的变动, 程序的灵活咱们时常须要在项目中设置各类开关或者配置项. 在往常时通常会采用配置文件的方式, 可是在这分布式集群时代采用传统的配置管理方式显得有点力不从心. 同时在咱们的 app/web 终端咱们也时常须要各类配置, 在面对大量的终端配置获取请求咱们的配置中心须要高性能, 高稳定性.html
duic 的诞生并不单单只是为了解决服务器应用的配置java
duic 是采用 spring-webflux 开发, 经过 RESTful 方式拉取配置, 支持配置合并, 内置 web 控制台修改配置, 支持配置用户权限设置, 支持配置访问 IP 限制, 支持 token 限制, 支持多应用多环境变量, 支持 docker, 支持集群nginx
GET {base_uri}/apps/states/{name}/{profile}
按需取获取配置
你有时可能须要获取某个 key 的配置而不是整个 profile 的配置GET {base_uri}/apps/{name}/{profile}/{key}
key 支持按 .
分隔, 父 key 能够获取子项的全部配置git
获取
k1
项的配置githubrequest
$ curl https://duic.zhudy.io/api/v1/apps/sample/first/k1
responseweb{ "string":"samples first k1 string", "int":11, "array":[ 1, 2, 3 ], "multiple_lines":"sample\nfirst\nmultiple\nlines" }获取
k1.string
项的配置springrequest
$ curl https://duic.zhudy.io/api/v1/apps/sample/first/k1.string
responsemongodb{ "value":"samples first k1 string" }
@ConfigurationProperties
@Value
注解, 同时还支持配置热加载duic-java-client
java 版本客户端程序docker
服务配置 application.yml数据库
server: port: 7777 spring: jackson: default_property_inclusion: non_default date_format: yyyy-MM-dd'T'HH:mm:ss joda_date_time_format: yyyy-MM-dd'T'HH:mm:ss property_naming_strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES data: mongodb: uri: mongodb://127.0.0.1:27017/duic duic: root_email: kevinz@weghst.com root_password: 123456 jwt: secret: U2FsdGVkX1/jO0KlWumac4yDM8rOgWPkaV0KrSHDynWOP6n8FMJB9uSc8EW/qM+VagrMBAXGpyw= expires_in: 180
在 docker-compose 配置中已经集成 mongodb, nginx, let’s encrypt, docker-gen 服务发现
$ git clone https://github.com/zhudyos/duic-docker-compose.git
cd duic-docker-compose
$ chmod +x start.sh
$ ./start.sh
服务配置
1. 建立 **config** 文件夹 2. 在 **config** 文件夹中建立配置文件 **application.yml** 3. **application.yml** 配置文件将 **spring.data.mongodb.uri** 链接地址修改成安装服务的 MongoDB 链接地址
启动容器$ docker run -d -p 7777:7777 -v $(pwd)/config:/app/config zhudyos/duic
将 application.yml 配置文件放置在 config 目录中并挂载到容器的 /app/config 目录中, duic 则会使用指定的配置