duic
duic copied to clipboard
分布式配置中心,集中化配置管理,应用配置权限管理,配置实时更新等功能
:email: [email protected]
image:https://img.shields.io/travis/zhudyos/duic.svg["Travis",link="https://travis-ci.org/zhudyos/duic"] image:https://img.shields.io/docker/pulls/zhudyos/duic.svg["Docker Pulls",link="https://hub.docker.com/r/zhudyos/duic/"] image:https://img.shields.io/github/license/zhudyos/duic.svg["GitHub license",link="https://github.com/zhudyos/duic/blob/master/LICENSE"]
______ _ ______
|_ _ `. (_) .' ___ |
| | `. \ __ _ __ / .' \_|
| | | |[ | | | [ || |
_| |_.' / | \_/ |, | |\ `.___.'\
|______.' '.__.'_/[___]`.____ .'
= duic 配置中心
duic 是采用 kotlin 与 spring-webflux 开发的配置中心。通过 HTTP 的方式获取配置信息,可管理任何语言、应用的配置。设计目标是统一不同应用的配置管理方式,打造更人性化的配置编辑方式,提供更灵活的配置获取方式。
- 支持 mongodb, mysql, postgresql 存储配置信息
- 支持多配置合并
- 支持按需获取配置
- 支持用户权限控制
- 支持 ip/token 访问限制
- 支持分布式集群配置管理
- 支持 docker
== 特性
- 集中配置管理, 多应用多环境配置
在 web 控制台中你可以创建多个配置,相同应用不同环境的配置可以使用(profile)区分,同一个应用下多个(profile)配置可以合并 https://duic.zhudy.io/index.html[https://duic.zhudy.io/index.html]
- 配置数据类型/数据格式
duic 采用 yaml 文件格式管理配置,天生支持数据类型及数据格式
- HTTP 方式拉取配置
duic 采用 HTTP 的方式拉取配置,所以你可以在任何应用中使用 duic 配置管理
- 配置状态检查
支持配置状态检查,如果配置发生变动该状态也会相应变化,使用方可根据状态的变化重载配置
+
GET {base_uri}/apps/states/{name}/{profiles}
- 多配置合并
相同应用(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]
-
获取
k1
项的配置
request::
$ curl https://duic.zhudy.io/api/v1/apps/sample/first/k1
response::
+
{
"string":"samples first k1 string",
"int":11,
"array":[
1,
2,
3
],
"multiple_lines":"sample\nfirst\nmultiple\nlines"
}
-
获取
k1.string
项的配置
request::
$ curl https://duic.zhudy.io/api/v1/apps/sample/first/k1.string
response::
+
{
"value":"samples first k1 string"
}
====
- 完美支持 spring-boot
duic 不仅可以管理你的业务配置,同时还可以管理 spring-boot 自身的任何配置,你可以像在 application.yaml
文件中编辑配置一样的编辑它,
同时我们还提供了 https://github.com/zhudyos/duic-spring-cloud-config-client[duic-spring-cloud-config-client],该库支持 @ConfigurationProperties
@Value
注解,同时还支持配置热加载
- 配置权限管理
支持配置权限管理,用户只可以修改自身拥有权限的配置
- 配置支持 IP 访问限制
每个 profile 的配置都可以设置 IP 访问控制,不在访问限制内的 IP 将无法获取配置信息
- 配置支持 TOKEN 校验
访问有 TOKEN 校验的配置必须在请求中带上 TOKEN,TOKEN 校验失败将无法获取配置信息
- 支持 docker 部署
https://hub.docker.com/r/zhudyos/duic[https://hub.docker.com/r/zhudyos/duic]
- 部署简单
duic 部署非常简单,只依赖一个数据库存储配置数据,不依赖其它任何中间件,即可实现分布式集群部署
- 高性能
duic 是采用 spring-webflux 开发,能最大化利用机器的硬件资源,同时 duic 是直接将所有可用的配置直接加载在内存中,在拉取配置时 直接从内存中返回配置信息,对于数据库没有任何压力
== 资源
- https://github.com/zhudyos/duic-java-client[duic-java-client]
java 版本客户端程序:: ** 支持 java ** 支持 spring
- https://github.com/zhudyos/duic-spring-cloud-config-client[duic-spring-cloud-config-client]
spring-boot 配置客户端程序
- https://github.com/zhudyos/duic-examples[duic-examples 示例程序]
== https://github.com/zhudyos/duic/wiki[文档]
== 已知用户 [TIP]
按登记顺序展示
如果你正在使用 duic,欢迎在 https://github.com/zhudyos/duic/issues/3[https://github.com/zhudyos/duic/issues/3] 登记。仅作为开源参考,不作其它用途
image::doc/images/know-users/2339.png[么么直播]
== 相关项目 . https://projects.spring.io/spring-boot/[Spring Boot] . https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html[Spring WebFlux] . https://vuetifyjs.com[Vuetify]
== 感谢 image::doc/images/jetbrains-blackandwhite.png[JetBrains,100,100,link="https://www.jetbrains.com/?from=duic"]