DuiC 一致配置管理 2

为何设想 DuiC

在工作中我们经常要根据差别环境设置差别的参数,让项目的天真性、可用性变得更高,那天真的设置就变得必不可少,虽然现在已存在许多设置治理解决方案,然则治理体式格局局限性大,顺应局限窄。

DuiC 在设想初就考虑到设置的运用局限,将设置猎取体式格局设想为 RESTful API 的体式格局,可支撑任何服务器端,客户端以及 WEB 轻松猎取设置。其次 DuiC 治理设置一致采纳 YAML 的体式格局,并供应 WEB 编辑器及语法高亮,语法校验等功用,下降设置修正的错误率。

DuiC 源码:
https://github.com/zhudyos/duic

已完成的功用

  1. 搜检设置状况
  2. 经由过程 key 猎取某个设置
  3. 经由过程 name/profile 猎取团体设置
  4. 多个 profile 设置深度兼并
  5. 设置权限治理
  6. 分布式设置治理
  7. 容器布置

Swagger 文档:
https://app.swaggerhub.com/ap…

Docker 镜像:
https://hub.docker.com/r/zhud…

Java Client API

DuiC 供应 Java 客户端 API 协助你疾速猎取设置,支撑 Android/Java/JavaWeb/Spring 猎取设置同时支撑热加载设置。

duic-java-client:
https://github.com/zhudyos/du…

Java/Android 运用

运用 API 供应的 ConfigUtils 工具包猎取设置。
建立 Config 实例并将设置为 ConfigUtils 的默许设置,运用。

Config config = new Config.Builder()
        .baseUri("https://duic.zhudy.io/api/v1")
        .name("hello")
        .profile("world")
        // .configToken("...")
        // .reloadPlot(new ReloadPlot(10, TimeUnit.SECONDS)) // 重载
        // .failFast(true) // 疾速失利
        // .listener() // 设置加载监听
        .build();
ConfigUtils.setDefaultConfig(config);

Java Web 运用

运用 API 供应的 ConfigUtils 工具包猎取设置。
在 web.xml 中设置监听器

<!-- 默许设置途径 classpath:duic.properties -->
<context-param>
  <param-name>duicConfigLocation</param-name>
  <param-value>classpath:duic.properties</param-value>
</context-param>

<listener>
  <listener-class>io.zhudy.duic.config.web.DuicConfigContextListener</listener-class>
</listener>

在 duic.properties 文件中增添设置治理中心信息

duic.base.uri=https://duic.zhudy.io/api/v1
duic.name=hello
duic.profile=world
duic.config.token=
duic.reload.period=10
duic.reload.unit=SECONDS
duic.fail.fast=false
# 多个 DuicListener 采纳英文逗号(,)分开
duic.listeners=xx.MyDuicListener

在 Spring 中运用

  1. 运用 API 供应的 ConfigUtils 工具包猎取设置
  2. 运用 @Value 的体式格局注入设置(引荐

以上2种体式格局都支撑热加载,引荐运用 @Value 的体式格局注入设置,这类体式格局关于你的代码没有任何的浸入性,支撑 spring3.2 以上的版本运用。

  1. 运用注解的体式格局初始化

    @Bean
    public static DuicConfigBeanFactoryPostProcessor duicConfigBeanFactoryPostProcessor() {
      DuicConfigBeanFactoryPostProcessor processor = new DuicConfigBeanFactoryPostProcessor();
      processor.setBaseUri("https://duic.zhudy.io/api/v1");
      processor.setName("hello");
      processor.setProfile("world");
      return processor;
    }
  2. 运用 XML 的体式格局初始化

    <bean id="duicConfigBeanFactoryPostProcessor" class="io.zhudy.duic.config.spring.duicConfigBeanFactoryPostProcessor">
      <property name="baseUri" value="https://duic.zhudy.io/api/v1"/>
      <property name="name" value="hello"/>
      <property name="profile" value="world"/>
    </bean>

注入设置

@Component
public class Example {

  @Value("${k1.string}")
  private String k1;
}

Spring Boot 支撑

DuiC 也供应了 duic-spring-cloud-config-client 来支撑 spring-boot,运用 DuiC 治理设置能够完整替换 spring-cloud-config。

duic-spring-cloud-config-client:
https://github.com/zhudyos/du…

该工具包支撑 @ConfigurationProperties@Value 注入设置,同时也支撑热加载。
注重假如你运用 @ConfigurationProperties 注入设置而且想要热加载设置须要合营运用 @RefreshScope 注解。

关于更多 @RefreshScope 的材料请检察 spring-cloud 官方文档:https://cloud.spring.io/sprin…

运用示例在 bootstrap.yml 文件中增添以下设置

spring:
  application:
    name: samples (1)

duic:
  spring:
    cloud:
      config:
        watch:
          enabled: true (2)
          initial_delay: 10000 (3)
          fixed_delay: 10000 (4)
        uri: https://duic.zhudy.io/api/v1 (5)
        profile: first,second (6)
        # token: [TOKEN] (7)

duic docker-compose

https://github.com/zhudyos/du…

关于 DuiC 越发细致的形貌,能够检察堆栈中在 readme。

在线演示平台:
https://duic.zhudy.io/index.html

e-mail: kevinz@weghst.com

password: 123456

人人能够运用在线演示平台,尝试运用其供应的 API 及 SDK。
友谊提示:服务器设置较差,接见速率能够不是很快,请体贴。

    原文作者:行走在赤道
    原文地址: https://segmentfault.com/a/1190000013055399
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞