配置中心(Mconf)
开源产品介绍(微服务基础设施QQ交流群:191958521)
注意:有兴趣的码友,可以联系我加入参与开发!
微服务神经元(neural)
微序列(sequence)
1 概述
在分布式微服务架构中,当应用数量和各个应用部署实例的数量较多时,如果还是手动去实现配置信息的修改或数据的迁移等,其效率是很低的。且认为手动操作的也有可能出现错误的情况,从而引发应用发布错地方、启动不了、发不通等情况。
为了解决以上问题,开发了基于Zookeeper的配置中心(微服务配置中心:mconf),用于解决以上问题。同时新引入了微服务配置中心也为架构带来了运维成本和故障风险。因此建议不要强制依赖mconf,即没有mconf也能正常使用,当然有了mconf更好,可以为我们解决很多繁琐的事情。mconf依赖的Zookeeper可以靠集群来实现高可用,但mconf本身的问题也是可能存在的,所以使用请慎重。
核心支持功能:
支持精简版mconf:管理精简版的“app-conf”结构型配置
支持多数据中心配置管理
支持多环境配置原理
支持配置文件分组管理
支持配置文件多版本管理
支持单个配置文件多数据项结构(List型)
支持配置文件存储的高可靠(由Zookeeper和Redis保证)
2 配置接口
2.1 SDK端核心接口
该SDK主要用于给各个应用提供一个配置中心的工具包。
接口1: 订阅当前应用的所有配置或订阅当前应用下的部分指定配置
void subscribe(NotifyListener listener, String application, String... configs) throws MicroConfigException;
接口2: 取消订阅
void unsubscribe(String application, String... configs) throws MicroConfigException;
接口3: 拉取当前应用的所有配置或拉取当前应用下的部分配置
List pull(String application, String... configs) throws MicroConfigException;
2.2 OPS端配置数据运维接口
该组接口主要用于运维端管理配置数据而是用。
接口1:发布一条配置信息
boolean publish(MetaMultiDataConfig metaMultiDataConfig) throws MicroConfigException;
接口2:删除一条配置信息
boolean delete(MetaConfig metaConfig) throws MicroConfigException;
接口3:搜索配置信息列表(支持按环境、应用、配置、版本号和关键词的搜搜)
List search(MetaConfig metaConfig, String keyword) throws MicroConfigException;
接口4:订阅所有配置
void subscribe(NotifyListener listener) throws MicroConfigException;
接口5:取消订阅
void unsubscribe() throws MicroConfigException;
接口6:清空配置中心所有数据
void clear() throws MicroConfigException;
2.3 OPS端环境运维接口
该组接口主要用于运维端维护一套环境数据清单。
接口1:发布一个环境
boolean publish(String environment, String name) throws MicroConfigException;
接口2:删除一个环境
boolean delete(String environment) throws MicroConfigException;
接口3:查询所有的环境列表
Set environments() throws MicroConfigException;
2.4 OPS端配置关系运维接口
该组配置主要用于运维一套"应用-配置-版本"的映射关系。
接口1:发布一条配置关系数据
boolean publish(String application, String name, String[] configs, String[] versions) throws MicroConfigException;
接口2:删除一条配置关系数据
boolean delete(String application, String config, String version) throws MicroConfigException;
接口3:查询所有的配置映射关系数据
Set applicationConfigVersions() throws MicroConfigException;