DuiC 統一配置管理 2

爲何設計 DuiC

在工做中咱們時常要根據不一樣環境配置不一樣的參數,讓項目的靈活性、可用性變得更高,那靈活的配置就變得必不可少,雖然目前已經存在不少配置管理解決方案,可是管理方式侷限性大,適應範圍窄。html

DuiC 在設計初就考慮到配置的應用範圍,將配置獲取方式設計爲 RESTful API 的方式,可支持任何服務器端,客戶端以及 WEB 輕鬆獲取配置。其次 DuiC 管理配置統一採用 YAML 的方式,並提供 WEB 編輯器及語法高亮,語法校驗等功能,下降配置修改的錯誤率。java

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 獲取配置同時支持熱加載配置。git

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

Java/Android 使用

使用 API 提供的 ConfigUtils 工具包獲取配置。
建立 Config 實例並將設置爲 ConfigUtils 的默認配置,使用。github

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 中配置監聽器web

<!-- 默認配置路徑 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 文件中增長配置管理中心信息spring

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 以上的版本使用。docker

  1. 使用註解的方式初始化bootstrap

    @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 的方式初始化api

    <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。
友情提醒:服務器配置較差,訪問速度可能不是很快,請體諒。

相關文章
相關標籤/搜索