博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高性能配置管理中心 duic
阅读量:5873 次
发布时间:2019-06-19

本文共 3047 字,大约阅读时间需要 10 分钟。

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

duic 配置中心

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

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

简介

duic 是采用 spring-webflux 开发, 通过 RESTful 方式拉取配置, 支持配置合并, 内置 web 控制台修改配置, 支持配置用户权限设置, 支持配置访问 IP 限制, 支持 token 限制, 支持多应用多环境变量, 支持 docker, 支持集群

特性

  • 集中配置管理, 多应用多环境配置
    在 web 控制台中你可以创建多个配置, 相同应用不同环境的配置可以使用(profile)区分, 同一个应用下多个(profile)配置可以合并
  • 配置数据类型/数据格式
    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\nfirst\nmultiple\nlines"}

    获取 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 文件中编辑配置一样的编辑它, 同时我们还提供了 , 该库支持 @ConfigurationProperties @Value 注解, 同时还支持配置热加载
  • 配置权限管理
    支持配置权限管理, 用户只可以修改自身拥有权限的配置
  • 配置支持 IP 访问限制
    每个 profile 的配置都可以设置 IP 访问控制, 不在访问限制内的 IP 将无法获取配置信息
  • 配置支持 TOKEN 校验
    访问有 TOKEN 校验的配置必须在请求中带上 TOKEN, TOKEN 校验失败将无法获取配置信息
  • 支持 docker 部署
  • 部署简单
    duic 部署只依赖于 , 集群部署也只需要直接启动多个实例即可, 不需要其它任何中间件或者服务
  • 高性能
    duic 是采用 spring-webflux 开发, 能最大化利用机器的硬件资源, 同时 duic 是直接将所有可用的配置直接加载在内存中, 在拉取配置时 直接从内存中返回配置信息, 对于数据库没有任何压力

资源

  • java 版本客户端程序

    • 支持 java
    • 支持 spring
  • spring-boot 配置客户端程序

部署

服务配置 application.yml

server:  port: 7777spring:  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/duicduic:  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 配置中已经集成 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

  • 服务配置

    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 则会使用指定的配置

转载地址:http://kohnx.baihongyu.com/

你可能感兴趣的文章
Redis 通用操作2
查看>>
性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
查看>>
11. Spring Boot JPA 连接数据库
查看>>
洛谷P2925 [USACO08DEC]干草出售Hay For Sale
查看>>
MapReduce工作原理流程简介
查看>>
那些年追过的......写过的技术博客
查看>>
小米手机解锁bootload教程及常见问题
查看>>
Python内置函数property()使用实例
查看>>
Spring MVC NoClassDefFoundError 问题的解决方法。
查看>>
CentOS 6.9配置网卡IP/网关/DNS命令详细介绍及一些常用网络配置命令(转)
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
C# 解决窗体闪烁
查看>>
使用Python编写简单的端口扫描器的实例分享【转】
查看>>
ActionFilterAttribute
查看>>
PCM、G.729等常用VoIP编码的理论带宽计算
查看>>
selenium+python自动化92-多线程启动多个不同浏览器
查看>>
【nginx】配置Nginx实现负载均衡
查看>>
20160222.CCPP体系具体解释(0032天)
查看>>
Java面试必问,ThreadLocal终极篇
查看>>
Arduino
查看>>