分佈式配置中心 duic

什麼是配置?

服務運行時可以經過外部動態修改的參數既是配置。在運行時動態變動服務的行爲,避免業務發生變動須要修改代碼或重啓服務等等。html

什麼是 duic?

duic 是配置管理中心,將配置統一管理提供標準的配置格式及編輯方式。
設計目標是統一不一樣應用的配置管理方式,打造更人性化的配置編輯方式,提供更靈活的配置獲取方式。java

圖片描述

如上圖:duic 支持任何應用,任何語言的配置管理(Java,Go,Android,Web等),同時 duic 採用 YAML 語法做用配置文件格式,支持數據類型及結構化配置。
圖片描述mysql

如上圖採用 YAML 編輯好配置以後經過 RESTful 接口獲取配置(PS:官方目前已經提供Java、Android、Go語言的SDK,後期還會支持更多語言)。git

爲何採用 YAML 做爲配置格式?

  1. YAML 是一種通用的數據格式
  2. YAML 支持結構化配置可以彌補 properties 這類單純 key=value 格式的不足
  3. YAML 支持數據類型
  4. YAML 支持引用
  5. YAML 支持註釋
  6. YAML 可讀性高

特性

  • 支持 MongoDB,MySQL,PostgreSQL,Oracle 存儲配置信息
  • 配置修改實時更新
  • 支持多配置合併
  • 支持按需獲取配置
  • 支持歷史版本比較
  • 支持配置克隆
  • 支持用戶權限控制
  • 支持 IP/Token 訪問限制
  • 支持 Docker

部署

開箱即用,duic 每一個 release 版本均可以經過 GitHub Releases 獲取 jar 包部署,或者你能夠在 Docker Hub 獲取 Docker 鏡像直接部署。你只須要關注如何使用 duic,而無需關心內部的實現細節,固然你若是對實現細節感興趣,很是歡迎幫忙審查代碼,你的幫助可讓 duic 的代碼變得更加精練。github

MySQL 部署

GitHub Releases 頁下載最新版本的 duic-x.x.x.jar 文件。spring

前提

Java >= 1.8
MySQL >= 5.6sql

建立數據庫

CREATE DATABASE IF NOT EXISTS `duic` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

配置數據庫鏈接

application.ymldocker

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/duic?autoReconnect=true&useServerPrepStmts=true
    username: root
    password: root
PS:將 application.yml 文件與 duic-x.x.x.jar 文件放置在同一目錄中。

duic 是採用 spring-boot 開發,配置文件目錄完成遵照 spring-boot 默認加載方式,更多關於 spring-boot 配置能夠了解數據庫

啓動服務

java -Dspring.profiles.active=mysql -jar duic.jar

輸出以下日誌時,恭喜你 duic 已經啓動成功。編程

______              _    ______
|_   _ `.           (_) .' ___  |
  | | `. \ __   _   __ / .'   \_|
  | |  | |[  | | | [  || |
 _| |_.' / | \_/ |, | |\ `.___.'\
|______.'  '.__.'_/[___]`.____ .'
:: duic ::      (v1.5.2-SNAPSHOT)

2018-05-03 07:06:05,980 INFO  i.z.d.server.Application$Companion - Starting Application.Companion v1.5.2-SNAPSHOT on ubuntu with PID 47440 (/opt/duic/duic.jar started by zy in /opt/duic)
2018-05-03 07:06:05,984 INFO  i.z.d.server.Application$Companion - The following profiles are active: mysql,prod
2018-05-03 07:06:09,595 INFO  r.i.netty.tcp.BlockingNettyContext - Started HttpServer on /0:0:0:0:0:0:0:0%0:7777
2018-05-03 07:06:09,596 INFO  o.s.b.w.e.netty.NettyWebServer - Netty started on port(s): 7777
2018-05-03 07:06:09,600 INFO  i.z.d.server.Application$Companion - Started Application.Companion in 4.192 seconds (JVM running for 4.864)

登陸控制檯編輯你的第一個配置吧

http://[IP]:7777/index.html
PS:記得將 IP 替換爲你服務的 IP。

關於 duic 部署在這裏就寫這麼多了,有任何問題請給我留言,我將一一解答,更多關於 duic 部署方面的內容,你們能夠參考官方提供的文檔 DuiC Wiki

使用

登陸並建立你的第一個配置

https://duic.zhudy.io/index.html
圖片描述


圖片描述

spring-boot 加載配置

添加 Maven 依賴

<dependency>
  <groupId>io.zhudy.duic</groupId>
  <artifactId>duic-spring-cloud-config-client</artifactId>
  <version>2.0.1</version>
</dependency>

添加 Gradle 依賴

compile "io.zhudy.duic:duic-spring-cloud-config-client:2.0.1"

bootstrap.yml 配置文件中添加獲取配置信息

duic:
  spring:
    cloud:
      config:
        uri: https://duic.zhudy.io/api/v1
        name: hello
        profile: first
        # token: [TOKEN]
  • uri 配置中心地址前綴
  • name 配置名稱
  • profile 配置環境名稱,多個採用,分隔

配置完成後在 spring-boot 項目中便可使用 @ConfigurationProperties @Value 方式注入配置依賴,duic 並無提供任何自定義註解,徹底遵照 spring-boot 的編程習慣,無縫接入及移除 duic。

GitHub: duic-spring-cloud-config-client

spring 加載配置

添加 Maven 依賴

<dependency>
  <groupId>io.zhudy.duic</groupId>
  <artifactId>duic-spring-cloud-config-client</artifactId>
  <version>2.0.1</version>
</dependency>

添加 Gradle 依賴

compile "io.zhudy.duic:duic-spring-cloud-config-client:2.0.1"

<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="first"/>
</bean>

配置完成 spring bean 以後在項目中便可使用 @Value 注入配置,徹底兼容 spring 編程習慣,支持配置熱加載。

GitHub: duic-java-client

go 加載配置

引入 duic-go-client 依賴包

go get -u github.com/zhudyos/duic-go-client

初始化配置信息

duic.BaseUri = "https://duic.zhudy.io/api/v1"
duic.Name = "hello"
duic.Profiles = "first"
duic.Init()

獲取配置

duic.Bool("key")        // 獲取一個 bool 配置
duic.Int("key")         // 獲取一個 int 配置
duic.Float64("key")     // 獲取一個 float64 配置
duic.String("key")      // 獲取一個 string 配置
duic.Array("key")       // 獲取一個數組配置
duic.Object("key")      // 獲取一個對象配置

結語

歡迎 PR!!!
GitHub: https://github.com/zhudyos/duic
QQ羣:540315111

相關文章
相關標籤/搜索