您的位置 首页 > 数码极客

‘disconf’disconfident

配置管理,对于任何一个系统而言,都是至关重要的组成部分,而对于分布式系统而言,如何提供稳健可靠、使用便捷的配置管理,则变得尤为重要且复杂。

在一个分布式系统中,往往拥有成千上百的服务实例,他们可能是可以批量统一管理的同构节点,也可能是完全不同的异构服务。Disconf,这个开源的分布式系统配置管理平台,就提供了一个较好的解决方案。


Disconf


简介

Disconf,是 knightliao 在 Github 上开源的分布式配置管理平台,目前版本为 2.6.36。

Disconf 专注于各种「分布式系统配置管理」的「通用组件」和「通用平台」, 提供统一的「配置管理服务」。

Disconf 部署极其简单,同一个上线包,无需改动配置,即可在多个环境中上线;支持部署动态化,更改配置,无需重新打包或重启,即可实时生效;提供统一管理,提供web平台,统一管理多个环境。

Disconf


使用

Disconf 支持

  • 配置(配置项+配置文件)的分布式化管理
  • 配置发布的统一化
  • 极简的使用方式,通过注解式编程 或 XML 无代码侵入模式实现

Disconf

此外,Disconf 还具有低侵入性、强兼容性、支持配置项多个项目共享,支持批量处理项目配置,支持配置监控,和配置自校验功能。

Disconf 项目包含了:客户端 disconf-Client 和管理端 disconf-Web 两个模块,均为 Java 实现。

要使用 disconf-client 客户端,在项目的 Maven POM 中加入:

<dependency> <groupId>com.baidu.disconf</groupId> <artifactId>disconf-client</artifactId> <version>2.6.36</version> </dependency>

要使用 disconf-Web 管理端,首先安装 MySQL、Tomcat、Nginx、zookeeper 和 Redis,然后进行构建

ONLINE_CONFIG_PATH=/home/work/dsp/disconf-rd/online-resources WAR_ROOT_PATH=/home/work/dsp/disconf-rd/war export ONLINE_CONFIG_PATH export WAR_ROOT_PATH cd disconf-web sh deploy

部署 War,修改 ,在 Host 设定 Context:

<Context path="" docBase="/home/work/dsp/disconf-rd/war"></Context>

并设定端口为 8015,然后启动 Tomcat。最后使用 Nginx 部署前端。在浏览器访问,并进行登录,就能进入 Web 管理后台:

Disconf

左上角可以选择APP和环境,选择之后,就会在中间出现若干个版本,选择版本后,就会显示 APP、环境、版本 三个条件下的配置列表:

Disconf


Disconf 提供了简单的注解类方式 托管配置。托管后,本地不需要此配置文件,统一从配置中心服务获取。当配置被更新后,注解类的数据自动同步。

@Service @DisconfFile(filename = "redis.properties") public class JedisConfig { // 代表连接地址 private String host; // 代表连接port private int port; /** * 地址, 分布式文件配置 * * @return */ @DisconfFileItem(name = "redis.host", associateField = "host") public String getHost() { return host; } public void setHost(String host) { = host; } /** * 端口, 分布式文件配置 * * @return */ @DisconfFileItem(name = "redis.port", associateField = "port") public int getPort() { return port; } public void setPort(int port) { = port; } }

如果配置更新时,如果需要的是不仅注解类自动同步,并且其它类也需要做些变化,那么就需要一个回调。

@Service @Scope("singleton") @DisconfUpdateService(classes = { Jedi }) // 这里或者写成 @DisconfUpdateService(confFileKeys = { "redis.properties" }) public class SimpleRedisServiceUpdateCallback implements IDisconfUpdate

除了支持基于注解式的配置文件,Disconf 还支持基于XML无代码侵入式的配置:

<bean id="configproperties_disconf" class="com.baidu.di;> <property name="locations"> <list> <value>classpa;/value> <value>classpa;/value> <value>classpa;/value> <value>classpa;/value> <value>classpa;/value> <value>my;/value> </list> </property> </bean> <bean id="propertyConfigurer" class="com.baidu.di;> <property name="propertiesArray"> <list> <ref bean="configproperties_disconf"/> </list> </property> </bean> <bean id="autoService" class="com.exam;> <property name="auto" value="${auto=100}"/> </bean>

Disconf 提供了强大的 Web 配置平台控制,可以:

  • 上传、更新的配置文件、配置项(有邮件通知),并且实现动态推送
  • 批量下载配置文件,查看ZK上部署情况
  • 查看配置的影响范围:哪些机器在使用,各机器上的配置内容各是什么,并且自动校验一致性
  • 支持自动化校验配置一致性
  • 简单权限控制


总结

Disconf 专注于各种分布式系统配置管理的通用组件和通用平台, 提供统一的配置管理服务。

与其他分布式配置解决方案相比,提供了同构系统的配置发布统一化,提供了配置更改的实时推送,提供了稳定有效的容灾方案,统一的Web管理后台,和异构系统的配置包管理。

目前,Disconf 已应用在多条产品线上,实践证明了解决方案的有效性和稳定性。


Disconf

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“disconf,disconfident,discomfort,disconfirmation”边界阅读