配置中心_分布式配置中心 DuiC

DuiC是一款基于spring-webflux开发的分布式配置中心,提供RESTful接口进行配置拉取,支持配置合并、权限控制、IP限制、Token验证等功能。它允许在Web控制台上管理多个应用和环境的配置,采用yaml格式,并且与spring-boot完美集成,支持配置的实时更新和安全控制。
摘要由CSDN通过智能技术生成

duic 分布式配置中心

duic 配置中心的设计目标是统一不同应用的配置管理方式,打造更人性化的配置编辑方式,提供更灵活的配置获取方式

 ______ _ ______|_ _ `. (_) .' ___ | | | `.  __ _ __ / .' _| | | | |[ | | | [ || | _| |_.' / | _/ |, | | `.___.'|______.' '.__.'_/[___]`.____ .'
d6cad7e5e234f552305c2a5ac47c3c29.png
497faf9b438753903b1028a15582343f.png
3f0296bed4a956e56a73d7c3d337d97a.png
e75e546ba35e13f79d3fd3037f409e5d.png

简介

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}/{profiles}
  • 多配置合并
  • 相同应用(name)下的多个配置(profile)可以合并配置,相同 key 的配置将以深度合并的方式返回
GET {base_uri}/apps/{name}/{profile},{profile2},{profile3}
  • 合并方式按照请求 URLprofile 顺序,后者覆盖前者
  • 按需获取配置
  • 你有时可能需要获取某个 key 的配置而不是整个 profile 的配置
GET {base_uri}/apps/{name}/{profile}/{key}
  • key 支持按 . 分隔, 父 key 可以获取子项的所有配置
  • 完美支持 spring-boot
  • duic 不仅可以管理你的业务配置,同时还可以管理 spring-boot 自身的任何配置,你可以像在 application.yaml 文件中编辑配置一样的编辑它, 同时我们还提供了 duic-spring-cloud-config-client,该库支持 @ConfigurationProperties@Value 注解,同时还支持配置热加载
  • 配置权限管理
  • 支持配置权限管理,用户只可以修改自身拥有权限的配置
  • 配置支持 IP 访问限制
  • 每个 profile 的配置都可以设置 IP 访问控制,不在访问限制内的 IP 将无法获取配置信息
  • 配置支持 TOKEN 校验
  • 访问有 TOKEN 校验的配置必须在请求中带上 TOKEN,TOKEN 校验失败将无法获取配置信息
  • 支持 docker 部署
  • https://hub.docker.com/r/zhudyos/duic
  • 高性能
  • duic 是采用 spring-webflux 开发,能最大化利用机器的硬件资源,同时 duic 是直接将所有可用的配置直接加载在内存中,在拉取配置时 直接从内存中返回配置信息,对于数据库没有任何压力

示例:

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.context.properties.EnableConfigurationProperties;/** * @author Kevin Zou (kevinz@weghst.com) */@SpringBootApplication@EnableConfigurationProperties(Config.class)public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.context.properties.NestedConfigurationProperty;import java.util.List;/** * @author Kevin Zou (kevinz@weghst.com) */@ConfigurationPropertiespublic class Config { @NestedConfigurationProperty private K1 k1 = new K1(); public K1 getK1() { return k1; } public void setK1(K1 k1) { this.k1 = k1; } public static class K1 { private String string; private List array; public String getString() { return string; } public void setString(String string) { this.string = string; } public List getArray() { return array; } public void setArray(List array) { this.array = array; } }}
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;/** * @author Kevin Zou (kevinz@weghst.com) */@RestControllerpublic class TestController { @Autowired private Config config; /** * 使用 `spring` 提供的 `@Value` 注入配置。 */ @Value("${k1.string}") private String k1; @GetMapping("/config") public Object query() { return config; } @GetMapping("/config/k1") public Object queryK1() { return k1; }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值