GithubHelp home page GithubHelp logo

davidmr001 / duic Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zhudyos/duic

0.0 1.0 0.0 1.64 MB

配置中心,支持(server/web/app...)等应用配置管理

Home Page: https://duic.zhudy.io/index.html

License: Apache License 2.0

JavaScript 5.71% Kotlin 56.77% Vue 37.02% CSS 0.02% HTML 0.48%

duic's Introduction

Travis Docker Pulls GitHub license

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

duic 配置中心

在软件开发中随着业务的需要, 需求的变更, 程序的灵活我们时常需要在项目中设置各种开关或者配置项. 在往常时一般会采用配置文件的方式, 但是在这分布式集群时代采用传统的配置管理方式显得有点力不从心. 同时在我们的 app/web 终端我们也时常需要各种配置, 在面对大量的终端配置获取请求我们的配置中心需要高性能, 高稳定性.

duic 的诞生并不仅仅只是为了解决服务器应用的配置

简介

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}/{profile}

  • 多配置合并

    相同应用(name)下的多个配置(profile)可以合并配置, 相同 key 的配置将以深度合并的方式返回

    GET {base_uri}/apps/{name}/{profile},{profile2},{profile3}

    合并方式按照请求 URLprofile 顺序, 后者覆盖前者

  • 按需取获取配置

    你有时可能需要获取某个 key 的配置而不是整个 profile 的配置

    GET {base_uri}/apps/{name}/{profile}/{key}

    key 支持按 . 分隔, key 可以获取子项的所有配置

    Important
  • 完美支持 spring-boot

    duic 不仅可以管理你的业务配置, 同时还可以管理 spring-boot 自身的任何配置, 你可以像在 application.yaml 文件中编辑配置一样的编辑它, 同时我们还提供了 duic-spring-cloud-config-client, 该库支持 @ConfigurationProperties @Value 注解, 同时还支持配置热加载

  • 配置权限管理

    支持配置权限管理, 用户只可以修改自身拥有权限的配置

  • 配置支持 IP 访问限制

    每个 profile 的配置都可以设置 IP 访问控制, 不在访问限制内的 IP 将无法获取配置信息

  • 配置支持 TOKEN 校验

    访问有 TOKEN 校验的配置必须在请求中带上 TOKEN, TOKEN 校验失败将无法获取配置信息

  • 支持 docker 部署

  • 部署简单

    duic 部署只依赖于 mongodb, 集群部署也只需要直接启动多个实例即可, 不需要其它任何中间件或者服务

  • 高性能

    duic 是采用 spring-webflux 开发, 能最大化利用机器的硬件资源, 同时 duic 是直接将所有可用的配置直接加载在内存中, 在拉取配置时 直接从内存中返回配置信息, 对于数据库没有任何压力

资源

部署

服务配置 application.yml
server:
  port: 7777 # (1)

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 # (2)

duic:
  root_email: [email protected] # (3)
  root_password: 123456 # (4)
  jwt:
    secret: U2FsdGVkX1/jO0KlWumac4yDM8rOgWPkaV0KrSHDynWOP6n8FMJB9uSc8EW/qM+VagrMBAXGpyw= # (5)
    expires_in: 180 # (6)
  1. 应用服务端口

  2. MongoDB 连接地址

  3. 默认用户登录邮箱

  4. 默认用户登录密码

  5. JWT HMAC256 签名字符串

  6. JWT 过期时间(单位:分钟)


  1. docker-compose 部署

  2. docker 部署

    1. 安装 MongoDB

    2. 服务配置

      1. 创建 config 文件夹

      2. config 文件夹中创建配置文件 application.yml

      3. application.yml 配置文件将 spring.data.mongodb.uri 连接地址修改为安装服务的 MongoDB 连接地址

    3. 启用容器

      $ docker run -d -p 7777:7777 -v $(pwd)/config:/app/config zhudyos/duic
      Tip
      application.yml 配置文件放置在 config 目录中并挂载到容器的 /app/config 目录中, duic 则会使用指定的配置

duic's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.