资讯专栏INFORMATION COLUMN

高性能配置管理中心 duic

binaryTree / 2444人阅读

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

 ______              _    ______
|_   _ `.           (_) ." ___  |
  | | `.  __   _   __ / ."   \_|
  | |  | |[  | | | [  || |
 _| |_." / | \_/ |, | | `.___."
|______."  ".__."_/[___]`.____ ."
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 的配置将以深度合并的方式返回

按需取获取配置
你有时可能需要获取某个 key 的配置而不是整个 profile 的配置
GET {base_uri}/apps/{name}/{profile}/{key}
key 支持按 . 分隔, 父 key 可以获取子项的所有配置

获取 k1 项的配置

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

{
    "string":"samples first k1 string",
    "int":11,
    "array":[
        1,
        2,
        3
    ],
    "multiple_lines":"sample
first
multiple
lines"
}

获取 k1.string 项的配置

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

{
    "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 是直接将所有可用的配置直接加载在内存中, 在拉取配置时 直接从内存中返回配置信息, 对于数据库没有任何压力

资源

duic openapi-3.0 接口文档

duic-java-client
java 版本客户端程序

支持 java

支持 spring

duic-spring-cloud-config-client
spring-boot 配置客户端程序

duic-examples 示例程序

部署

服务配置 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

应用服务端口

MongoDB 连接地址

默认用户登录邮箱

默认用户登录密码

JWT HMAC256 签名字符串

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


docker-compose 部署

在 docker-compose 配置中已经集成 mongodb, nginx, let’s encrypt, docker-gen 服务发现

启动步骤

git clone
$ git clone https://github.com/zhudyos/duic-docker-compose.git

进入文件夹
cd duic-docker-compose

start.sh 授权
$ chmod +x start.sh

启动
$ ./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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27285.html

相关文章

  • 性能配置管理中心 duic

    摘要:配置中心在软件开发中随着业务的需要需求的变更程序的灵活我们时常需要在项目中设置各种开关或者配置项在往常时一般会采用配置文件的方式但是在这分布式集群时代采用传统的配置管理方式显得有点力不从心同时在我们的终端我们也时常需要各种配置在面对大量的终 ______ _ ______ |_ _ `. (_) . ___ | | | `...

    newsning 评论0 收藏0
  • 分布式配置中心 duic

    摘要:什么是是配置管理中心,将配置统一管理提供标准的配置格式及编辑方式。如上图支持任何应用,任何语言的配置管理,,,等,同时采用语法作用配置文件格式,支持数据类型及结构化配置。前提创建数据库配置数据库连接将文件与文件放置在同一目录中。 什么是配置? 服务运行时能够通过外部动态修改的参数既是配置。在运行时动态变更服务的行为,避免业务发生变更需要修改代码或重启服务等等。 什么是 duic? du...

    justjavac 评论0 收藏0
  • 分布式配置中心 duic

    摘要:什么是是配置管理中心,将配置统一管理提供标准的配置格式及编辑方式。如上图支持任何应用,任何语言的配置管理,,,等,同时采用语法作用配置文件格式,支持数据类型及结构化配置。前提创建数据库配置数据库连接将文件与文件放置在同一目录中。 什么是配置? 服务运行时能够通过外部动态修改的参数既是配置。在运行时动态变更服务的行为,避免业务发生变更需要修改代码或重启服务等等。 什么是 duic? du...

    james 评论0 收藏0
  • 分布式配置中心 duic

    摘要:什么是是配置管理中心,将配置统一管理提供标准的配置格式及编辑方式。如上图支持任何应用,任何语言的配置管理,,,等,同时采用语法作用配置文件格式,支持数据类型及结构化配置。前提创建数据库配置数据库连接将文件与文件放置在同一目录中。 什么是配置? 服务运行时能够通过外部动态修改的参数既是配置。在运行时动态变更服务的行为,避免业务发生变更需要修改代码或重启服务等等。 什么是 duic? du...

    wangdai 评论0 收藏0

发表评论

0条评论

binaryTree

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<