- ______ _ ______
- |_ _ `. (_) .' ___ |
- | | `. \ __ _ __ / .' \_|
- | | | |[ | | | [ || |
- _| |_.'/ | \_/ |, | |\ `.___.'\
- |______.''.__.'_/[___]`.____ .'
duic 配置中心
在软件开发中随着业务的需要, 需求的变更, 程序的灵活我们时常需要在项目中设置各种开关或者配置项. 在往常时一般会采用配置文件的方式, 但是在这分布式集群时代采用传统的配置管理方式显得有点力不从心. 同时在我们的 app/web 终端我们也时常需要各种配置, 在面对大量的终端配置获取请求我们的配置中心需要高性能, 高稳定性.
duic 的诞生并不仅仅只是为了解决服务器应用的配置
简介
duic 是采用 spring-webflux 开发, 通过 RESTful 方式拉取配置, 支持配置合并, 内置 web 控制台修改配置, 支持配置用户权限设置, 支持配置访问 IP 限制, 支持 token 限制, 支持多应用多环境变量, 支持 docker, 支持集群
特性
集中配置管理, 多应用多环境配置
在 web 控制台中你可以创建多个配置, 相同应用不同环境的配置可以使用 ( profile ) 区分, 同一个应用下多个 ( profile ) 配置可以合并 https://duic.zhudy.io/index.html
配置数据类型 / 数据格式
duic 采用 yaml 文件格式管理配置, 天生支持数据类型及数据格式
HTTP 方式拉取配置
duic 采用 HTTP 的方式拉取配置, 所以你可以在任何应用中使用 duic 配置管理
配置状态检查
支持配置状态检查, 如果配置发生变动该状态也会相应变化, 使用方可根据状态的变化重载配置
GET {base_uri}/apps/states/{name}/{profile}
多配置合并
相同应用 ( name ) 下的多个配置 ( profile ) 可以合并配置, 相同 key 的配置将以深度合并的方式返回
GET {base_uri}/apps/{name}/{profile},{profile2},{profile3}
合并方式按照请求 URL 中 profile 顺序, 后者覆盖前者
按需获取配置
你有时可能需要获取某个 key 的配置而不是整个 profile 的配置
GET {base_uri}/apps/{name}/{profile}/{key}
key 支持按 . 分隔, 父 key 可以获取子项的所有配置
Important
|
|
完美支持 spring-boot
duic 不仅可以管理你的业务配置, 同时还可以管理 spring-boot 自身的任何配置, 你可以像在 application.yaml 文件中编辑配置一样的编辑它, 同时我们还提供了 https://github.com/zhudyos/duic-spring-cloud-config-client , 该库支持
@ConfigurationProperties
@Value 注解, 同时还支持配置热加载
配置权限管理
支持配置权限管理, 用户只可以修改自身拥有权限的配置
配置支持 IP 访问限制
每个 profile 的配置都可以设置 IP 访问控制, 不在访问限制内的 IP 将无法获取配置信息
配置支持 TOKEN 校验
访问有 TOKEN 校验的配置必须在请求中带上 TOKEN, TOKEN 校验失败将无法获取配置信息
支持 docker 部署
https://hub.docker.com/r/zhudyos/duic
部署简单
duic 部署只依赖于 https://www.mongodb.com/ , 集群部署也只需要直接启动多个实例即可, 不需要其它任何中间件或者服务
高性能
duic 是采用 spring-webflux 开发, 能最大化利用机器的硬件资源, 同时 duic 是直接将所有可用的配置直接加载在内存中, 在拉取配置时 直接从内存中返回配置信息, 对于数据库没有任何压力
资源
duic openapi-3.0 接口文档 https://github.com/zhudyos/duic/blob/master/src/main/doc/duic-open-api.yml
https://github.com/zhudyos/duic-java-client
java 版本客户端程序
支持 java
支持 spring
https://github.com/zhudyos/duic-spring-cloud-config-client
spring-boot 配置客户端程序
duic-examples 示例程序 https://github.com/zhudyos/duic-examples
部署
服务配置 application.yml
- server:
- port: 7777 <b>(1)</b>
- 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 <b>(2)</b>
- duic:
- root_email: kevinz@weghst.com <b>(3)</b>
- root_password: 123456 <b>(4)</b>
- jwt:
- secret: U2FsdGVkX1/jO0KlWumac4yDM8rOgWPkaV0KrSHDynWOP6n8FMJB9uSc8EW/qM+VagrMBAXGpyw= <b>(5)</b>
- expires_in: 180 <b>(6)</b>
应用服务端口
MongoDB 连接地址
默认用户登录邮箱
默认用户登录密码
JWT HMAC256 签名字符串
JWT 过期时间(单位: 分钟)
docker-compose 部署 https://github.com/zhudyos/duic-docker-compose
docker 部署
安装 MongoDB
https://www.mongodb.com/
服务配置
创建 config 文件夹
在 config 文件夹中创建配置文件 application.yml
application.yml 配置文件将
spring.data.mongodb.uri
连接地址修改为安装服务的 MongoDB 连接地址
启用容器
$ docker run -d -p 7777:7777 -v $(pwd)/config:/app/config zhudyos/duic
Tip
| 将 application.yml 配置文件放置在 config 目录中并挂载到容器的 /app/config 目录中, duic 则会使用指定的配置 |
相关项目
- Spring Boot https://projects.spring.io/spring-boot/
- Spring WebFlux https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html
- vuetify https://vuetifyjs.com/
来源: http://www.tuicool.com/articles/bm2i2iF