3

四个方面

  1. 配置的演进
  2. 各种分布式配置中心
  3. autoconf介绍,功能介绍,以及易用UI
  4. autoconf实现原理

先回答什么是配置

程序在运行时的动态调整的能力
无需重启服务,无需重新编译

配置的演进

clipboard.png

分布式配置中心一览

目前分布式配置中心其实挺多的
比如 百度的disconf, 阿里的diamond,携程的disconf等。本文不是比较他们的性能优劣
只是介绍autoconf

autoconf

一款高性能的分布式配置中心。用postgresql+zeromq存储数据
支持实时推,60秒定时拉。支持各种数据类型       

autoconf的功能特点

1. 多环境:支持test/stage/product等多环境
2. 多版本:保存历史版本,可回滚版本
3. 推拉模型:实时推送变更,60秒定时拉
4. 灾备模型:本地缓存防止网络故障,redis减轻DB压力,DB做持久存储
5. 任意类型:支持KV,xml,html甚至二进制数据
6. 权限管理:分组权限管理,敏感信息加密
7. 批量修改: 创建多个同名不同配置组的配置,批量修改多个配置文件中的同一个字符串
8. 优先级:ip:port>ip>appName>envName
9. 极速搜索
注:配置组对应的就是一套开发环境。比如test环境是一个配置组。生产环境是一个配置组
   配置文件是各种配置。比如mysql配置,redis配置
   

autoconf后台管理界面

clipboard.png

clipboard.png

autoconf的实现原理

从应用调用角度来看
1. 应用调用controller。
2. controller先查询redis缓存
3. 如果没有,再查询数据库
从管理员角度
1. 修改配置
2. 发送一个mq给zeromq,zeromq先暂时存储,
3. 等待60秒以后,后台会拉取mq的消息。清除缓存。并将修改存到数据库

注:配置对后台使用人员是加密的。如果要查看配置,需要相应的解密权限

附 github地址:https://github.com/colin-lee/...


木木甫
494 声望23 粉丝

已工作的应届生。希望能和大家多多交流技术问题,