博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式配置中心 duic
阅读量:6079 次
发布时间:2019-06-20

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

什么是配置?

服务运行时能够通过外部动态修改的参数既是配置。在运行时动态变更服务的行为,避免业务发生变更需要修改代码或重启服务等等。

什么是 duic?

duic 是配置管理中心,将配置统一管理提供标准的配置格式及编辑方式。

设计目标是统一不同应用的配置管理方式,打造更人性化的配置编辑方式,提供更灵活的配置获取方式。

图片描述

如上图:duic 支持任何应用,任何语言的配置管理(Java,Go,Android,Web等),同时 duic 采用 YAML 语法作用配置文件格式,支持数据类型及结构化配置。

图片描述

如上图采用 YAML 编辑好配置之后通过 RESTful 接口获取配置(PS:官方目前已经提供Java、Android、Go语言的SDK,后期还会支持更多语言)。

为什么采用 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 版本都可以通过 获取 jar 包部署,或者你可以在 获取 Docker 镜像直接部署。你只需要关注如何使用 duic,而无需关心内部的实现细节,当然你如果对实现细节感兴趣,非常欢迎帮忙审查代码,你的帮助可以让 duic 的代码变得更加精练。

MySQL 部署

在 页下载最新版本的 duic-x.x.x.jar 文件。

前提

Java >= 1.8

MySQL >= 5.6

创建数据库

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

配置数据库连接

application.yml

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 默认加载方式,

启动服务

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,prod2018-05-03 07:06:09,595 INFO  r.i.netty.tcp.BlockingNettyContext - Started HttpServer on /0:0:0:0:0:0:0:0%0:77772018-05-03 07:06:09,596 INFO  o.s.b.w.e.netty.NettyWebServer - Netty started on port(s): 77772018-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 部署方面的内容,大家可以参考官方提供的文档 。

使用

登录并创建你的第一个配置

图片描述


图片描述

spring-boot 加载配置

添加 Maven 依赖

io.zhudy.duic
duic-spring-cloud-config-client
2.0.1

添加 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:

spring 加载配置

添加 Maven 依赖

io.zhudy.duic
duic-spring-cloud-config-client
2.0.1

添加 Gradle 依赖

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

配置完成 spring bean 之后在项目中即可使用 @Value 注入配置,完全兼容 spring 编程习惯,支持配置热加载。

GitHub:

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:
QQ群:

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

你可能感兴趣的文章
python2.6升级到2.7
查看>>
Unity SLua 如何调用Unity中C#方法
查看>>
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
查看>>
linux基础命令-查看系统状态-free -m以及top命令详解
查看>>
动态代理
查看>>
批量删除redis key
查看>>
被嫌弃的eval和with
查看>>
人工智能抢饭碗,未来怎么养活家庭?
查看>>
Python学习(7)--if语句
查看>>
top命令
查看>>
php无限极分类
查看>>
mysql数据库入门、进阶和提升(续一)
查看>>
Windows网络连接指示器,NCSI
查看>>
Android——Shape详解
查看>>
高性能专业上网行为管理设备WSG-500E开箱评测
查看>>
Win10中启用Linux Bash
查看>>
读【深度探索C++对象模型】【下】
查看>>
互引头文件的一种解决策略
查看>>
http://blog.51cto.com/itsoul/2047041
查看>>
发明了互联网和AI的美军机构长文预测:人类正与机器合二为一
查看>>