[关闭]
@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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注