联系
Knight's Tale » 我的作品

[My Contributions] 分布式配置管理平台Disconf

2014-08-26 21:15

Disconf(Distributed Configuration Management Platform )是百度前端技术部研发的统一的分布式配置管理平台,它是专注于各种系统的配置管理的通用组件/通用平台。

使用Disconf,您可以对您的所有业务系统的配置进行统一管理,特别地,您可以远程对配置进行动态更新,免去重复发布的各种问题。尤其,Disconf的低侵入会让你使用起来非常方便和安心。

Disconf一直处在快速迭代开发中,更新情况可参见:更新日志,目前已经有部分业务系统使用它来进行配置管理。预计今年年底前接入三条以上产品线。

以下是关于它的详细信息:

重要功能特点

  • 支持配置(配置项+配置文件)的分布式化管理
  • 配置发布统一化
    • 配置发布、更新统一化(云端存储、发布):配置存储在云端系统,用户统一在平台上进行发布、更新配置。
    • 配置更新自动化:用户在平台更新配置,使用该配置的系统会自动发现该情况,并应用新配置。特殊地,如果用户为此配置定义了回调函数类,则此函数类会被自动调用。
  • 配置异构系统管理
    • 异构包部署统一化:这里的异构系统是指一个系统部署多个实例时,由于配置不同,从而需要多个部署包(jar或war)的情况(下同)。使用Disconf后,异构系统的部署只需要一个部署包,不同实例的配置会自动分配。特别地,在业界大量使用部署虚拟化(如百度的JPASS系统,SAE,BAE)的情况下,同一个系统使用同一个部署包的情景会越来越多,Disconf可以很自然地与他天然契合。
    • 异构主备自动切换:如果一个异构系统存在主备机,主机发生挂机时,备机可以自动获取主机配置从而变成主机。
    • 异构主备机Context共享工具:异构系统下,主备机切换时可能需要共享Context。可以使用Context共享工具来共享主备的Context。
  • 注解式编程,极简的使用方式:我们追求的是极简的、用户编程体验良好的编程方式。通过简单的标注+极简单的代码撰写,即可完成复杂的配置分布式化。
  • 支持Spring方式和非Spring方式编程:用户可以自行选择编程习惯,是否采用Spring方式进行编程。推荐Spring编程方式。

注:配置项是指某个类里的某个Field字段。

Disconf的功能特点描述图:

查看大图

其它功能特点

  • 低侵入性和强兼容性
    • 低侵入性:极少的代码撰写,即可实现分布式配置。
    • 强兼容性:为程序添加了分布式配置注解后,开启Disconf则使用分布式配置;若关闭Disconf则使用本地配置;若开启Disconf后disconf-web不能正常Work,则Disconf使用本地配置。
  • 支持配置项多个项目共享,支持批量处理项目配置
  • 配置监控:平台提供自校验功能(进一步提高稳定性),可以定时校验应用系统的配置是否正确。

Github

详细情况请见:

https://github.com/knightliao/disconf

欢迎有兴趣同学Fork,一起来做贡献。