@yufan
2016-07-01T15:06:49.000000Z
字数 773
阅读 709
配置中心
配置中心:
动态改应用参数
连数据库
缓存
存储到文件里 能够序列化
推拉模型
配置组件侵入性小
推送的基本需求:
1.管理员修改了某个值 配置中心实现动态加载
2.稳定可靠 挂了也不能影响业务逻辑
默认值
高可靠
3.页面
支持多种修改
比如map,嵌套模型会使得页面很复杂 参数绑定
丰富便捷的管理页面,便于开发者维护
4.唯一性 用户定义了唯一的配置 根据需求加载配置下的所有配置
namespace 加载本用户的配置 存在表里面的类型字段
命名空间互相独立(配置命名空间表)
分组
5.配置类型 区分级别 不同级别有不同的影响情况
系统级配置 应用级配置 开发/配置/生产的配置
权限 --> 级别
标识风险程度 系统级 (不能改) 应用级 普通级
客户端的缓存 主动失效去获取配置
6.配置要有详细的描述和定义更新的东西,属性是否可以被更改
方便用户去看 防止属性被恶意篡改
7.配置需要版本化 需要修改的时间和人
8.配置修改之后不能立刻生效 处于等待推送状态 给人一个反悔的过程
技术要点:
管理系统 用户端的组件
注册中心 zk redis mongo 观察者
底层:持久化 存到数据库 (数据库层)配置中心起应用对外推送
协议层:
核心层:
前后端分离:
做成扩展形式去加载:jar包依赖 使用gradle 集成mock 和 单元测试
接口要规范 实现要按照组件的特色去实现
动态加载
用户模块:注册到注册中心 获取namespace下的配置缓存到本地
concurrentHashMap,缓存更新
jvm缓存 (程序运行时获取取值) 文件缓存 (值更新之后从文件缓存) redis memcached缓存
管理界面:boolean long double String 非集合类型
集合类型:list map
框架选型:
client不能用任何第三方jar包
guava
减少依赖
管理页面:传统的war apisystem
配置中心:模块化 java spi springboot MySQL为基准 zk