高性能配置管理中心 duic

______              _    ______
|_   _ `.           (_) .' ___  |
  | | `. \ __   _   __ / .'   \_|
  | |  | |[  | | | [  || |
 _| |_.' / | \_/ |, | |\ `.___.'\
|______.'  '.__.'_/[___]`.____ .'

duic 配置中心

在軟件開發中隨着業務的須要, 需求的變動, 程序的靈活咱們時常須要在項目中設置各類開關或者配置項. 在往常時通常會採用配置文件的方式, 可是在這分佈式集羣時代採用傳統的配置管理方式顯得有點力不從心. 同時在咱們的 app/web 終端咱們也時常須要各類配置, 在面對大量的終端配置獲取請求咱們的配置中心須要高性能, 高穩定性.html

duic 的誕生並不單單只是爲了解決服務器應用的配置java

簡介

duic 是採用 spring-webflux 開發, 經過 RESTful 方式拉取配置, 支持配置合併, 內置 web 控制檯修改配置, 支持配置用戶權限設置, 支持配置訪問 IP 限制, 支持 token 限制, 支持多應用多環境變量, 支持 docker, 支持集羣nginx

特性

  • 集中配置管理, 多應用多環境配置
    在 web 控制檯中你能夠建立多個配置, 相同應用不一樣環境的配置可使用(profile)區分, 同一個應用下多個(profile)配置能夠合併 https://duic.zhudy.io/index.html
  • 配置數據類型/數據格式
    duic 採用 yaml 文件格式管理配置, 天生支持數據類型及數據格式
  • HTTP 方式拉取配置
    duic 採用 HTTP 的方式拉取配置, 因此你能夠在任何應用中使用 duic 配置管理
  • 配置狀態檢查
    支持配置狀態檢查, 若是配置發生變更該狀態也會相應變化, 使用方可根據狀態的變化重載配置
    GET {base_uri}/apps/states/{name}/{profile}
  • 多配置合併
    相同應用(name)下的多個配置(profile)能夠合併配置, 相同 key 的配置將以深度合併的方式返回
  • 按需取獲取配置
    你有時可能須要獲取某個 key 的配置而不是整個 profile 的配置
    GET {base_uri}/apps/{name}/{profile}/{key}
    key 支持按 . 分隔, 父 key 能夠獲取子項的全部配置git

    獲取 k1 項的配置github

    request
    $ curl https://duic.zhudy.io/api/v1/apps/sample/first/k1
    responseweb

    {
        "string":"samples first k1 string",
        "int":11,
        "array":[
            1,
            2,
            3
        ],
        "multiple_lines":"sample\nfirst\nmultiple\nlines"
    }

    獲取 k1.string 項的配置spring

    request
    $ curl https://duic.zhudy.io/api/v1/apps/sample/first/k1.string
    responsemongodb

    {
        "value":"samples first k1 string"
    }
  • 完美支持 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/zhud...
  • 部署簡單
    duic 部署只依賴於 mongodb, 集羣部署也只須要直接啓動多個實例便可, 不須要其它任何中間件或者服務
  • 高性能
    duic 是採用 spring-webflux 開發, 能最大化利用機器的硬件資源, 同時 duic 是直接將全部可用的配置直接加載在內存中, 在拉取配置時 直接從內存中返回配置信息, 對於數據庫沒有任何壓力

資源

部署

服務配置 application.yml數據庫

server:
  port: 7777

spring:
  jackson:
    default_property_inclusion: non_default
    date_format: yyyy-MM-dd'T'HH:mm:ss
    joda_date_time_format: yyyy-MM-dd'T'HH:mm:ss
    property_naming_strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
  data:
    mongodb:
      uri: mongodb://127.0.0.1:27017/duic

duic:
  root_email: kevinz@weghst.com
  root_password: 123456
  jwt:
    secret: U2FsdGVkX1/jO0KlWumac4yDM8rOgWPkaV0KrSHDynWOP6n8FMJB9uSc8EW/qM+VagrMBAXGpyw=
    expires_in: 180
  1. 應用服務端口
  2. MongoDB 鏈接地址
  3. 默認用戶登陸郵箱
  4. 默認用戶登陸密碼
  5. JWT HMAC256 簽名字符串
  6. JWT 過時時間(單位:分鐘)

docker-compose 部署

在 docker-compose 配置中已經集成 mongodb, nginx, let’s encrypt, docker-gen 服務發現

啓動步驟

  1. git clone
    $ git clone https://github.com/zhudyos/duic-docker-compose.git
  2. 進入文件夾
    cd duic-docker-compose
  3. start.sh 受權
    $ chmod +x start.sh
  4. 啓動
    $ ./start.sh

docker 部署

  • 安裝 MongoDB
  • 服務配置

    1. 建立 **config** 文件夾
    2. 在 **config** 文件夾中建立配置文件 **application.yml**
    3. **application.yml** 配置文件將 **spring.data.mongodb.uri** 鏈接地址修改成安裝服務的 MongoDB 鏈接地址
  • 啓動容器
    $ docker run -d -p 7777:7777 -v $(pwd)/config:/app/config zhudyos/duic

    application.yml 配置文件放置在 config 目錄中並掛載到容器的 /app/config 目錄中, duic 則會使用指定的配置

GitHub Source Repository

相關文章
相關標籤/搜索