1 Star 0 Fork 110

Luckyseal / mconf

forked from 柠檬夕桐 / mconf 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

配置中心(Mconf)

License PRs Welcome GitHub Watch GitHub Star GitHub Fork

开源产品介绍(微服务基础设施QQ交流群:191958521)

  • 配置中心(mconf)
  1. GITHUB:https://github.com/yu120/mconf
  2. 码云:https://git.oschina.net/yu120/mconf
  • 微核心(micro)
  1. GITHUB:https://github.com/yu120/micro
  2. 码云:https://git.oschina.net/yu120/micro
  • 微服务神经元(neural)
  1. GITHUB:https://github.com/yu120/neural
  2. 码云:https://git.oschina.net/yu120/neural
  • 微序列(sequence)
  1. https://git.oschina.net/yu120/sequence

1 概述

在分布式微服务架构中,当应用数量和各个应用部署实例的数量较多时,如果还是手动去实现配置信息的修改或数据的迁移等,其效率是很低的。且认为手动操作的也有可能出现错误的情况,从而引发应用发布错地方、启动不了、发不通等情况。

为了解决以上问题,开发了基于Zookeeper的配置中心(微服务配置中心:mconf),用于解决以上问题。同时新引入了微服务配置中心也为架构带来了运维成本和故障风险。因此建议不要强制依赖mconf,即没有mconf也能正常使用,当然有了mconf更好,可以为我们解决很多繁琐的事情。mconf依赖的Zookeeper可以靠集群来实现高可用,但mconf本身的问题也是可能存在的,所以使用请慎重。

核心支持功能:

  • 支持精简版mconf:管理精简版的“app-conf”结构型配置
  • 支持多数据中心配置管理
  • 支持多环境配置原理
  • 支持配置文件分组管理
  • 支持配置文件多版本管理
  • 支持单个配置文件多数据项结构(List型)
  • 支持配置文件存储的高可靠(由Zookeeper和Redis保证)

2 配置接口

2.1 基本接口

void connect(URL url);//Connect configuration center
boolean available();//Configuration center status

2.2 操作接口

void addConf(Cmd cmd, Object obj);//The Add Configuration Data.
void delConf(Cmd cmd);//The Delete Configuration Data.
void upConf(Cmd cmd, Object obj);//The Update Configuration Data.
<T> T pull(Cmd cmd, Class<T> cls);//The Pull Configuration Data.
<T> List<T> pulls(Cmd cmd, Class<T> cls);//The Pulls Configuration Data.
<T> void push(Cmd cmd, Class<T> cls, Notify<T> notify);//The Push Configuration Data.
void unpush(Cmd cmd);//The UnPush Configuration Data.

2.3 统计接口

List<DataConf> getApps();//The Get Apps.
List<DataConf> getConfs();//The Get Confs.
List<DataConf> getDataBodys();//The Get Data Body.

3 数据结构

3.1 连接URL

连接配置中心的URL格式:

[zookeeper/redis] ://127.0.0.1:2181/mconf?node=[node]&app=[app]&env=[env]&conf=[conf]&category=[category]&version=[version]&data=[data]&……

####3.1.1 Zookeeper

  • timeout:连接超时时间,单位为ms,默认值60000ms
  • session:数据过期清理时间,单位为ms,默认值6000ms

####3.1.2 Redis

  • retryPeriod:数据变更探测周期,单位为ms,默认值10000ms

3.2 数据存储结构

3.2.1 Zookeeper

用curator来实现Zookeeper的操作。使用PATH节点来表示配置所属的相关信息,使用最后一层PATH的DATA区来存储JSON结构的配置数据。

第1层PATH:/mconf?……
第2层PATH:/[app]?node=[node]&……
第3层PATH:/[conf]?env=[env]&group=[group]&version=[version]&……
第4层PATH:/[data]?……
第4层DATA:{JSON Data String}

完整PATH格式:

/mconf?……/[app]?node=[node]&……/[conf]?env=[env]&group=[group]&version=[version]&……/[data]?……

3.2.2 Redis

Redis使用Map结构来存储配置信息。

Key:/mconf?……/[app]?node=[node]&……/[conf]?env=[env]&group=[group]&version=[version]&……
Field:[data]?……
Value:{JSON Data String}

4 可视化管理界面

docs/home.png

docs/apps.png

docs/confs.png

docs/datas.png

5 功能范围

  • mconf暂不支持本地缓存配置未离线文件,后期会考虑将拉下来的配置信息缓存到离线文件,解决对Zookeeper的强依赖问题。
MIT License Copyright (c) 2017 yu120 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

微服务配置中心 mconf(又称蚂蚁配置中心) ,基于 Zookeeper和Redis实现的配置中心。提供拉取配置、订阅配置、新增配置、删除配置、修改配置等功能。支持多数据中心、多环境配置、配置分组、多版本配置等功能。 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/luckyseal/mconf.git
git@gitee.com:luckyseal/mconf.git
luckyseal
mconf
mconf
master

搜索帮助

14c37bed 8189591 565d56ea 8189591