文章目录
前言
在当前设计日益复杂的分布式系统中,对于如何更加完善地去做好服务的配置管理,并不是一件简单的事情。配置的管理里面包含的细节内容其实不少,诸如配置的历史变更记录(就是我们常说的配置版本管理),还有配置的统一、一致性管理。我们经常会看到系统服务的配置在没有规范统一的情况下最后被改成各种差异化的配置值。这其中差异的配置在日后将会给系统管理人员带来额外的管理成本以及一些隐患。本文笔者结合目前Hadoop Ozone系统对于配置管理的一些idea设计,来谈谈这里面的内容。也是帮助大家了解了解在一个复杂的分布式系统中,我们会遇到哪些配置上的问题,以及我们可以怎么做来解决、改善这些问题。
复杂配置带来的一系列问题
当我们很多时候谈到系统的时候,我们不禁会聊到里面的Service服务,而对于这些独立Service的启动背后,对应的都有其相对应的配置。而随着系统Service功能的不断开发、迭代,对应的就会有越来越多新的相关联的配置项被加入到系统的配置文件中。这里面配置项的数目就可能扩张到一个非常恐怖的数量,比如Hadoop系统的配置。Hadoop系统发展至今,尽管它已经将配置进行了分模块的划分,但是每个模块下的配置数依然十分之多。即使是一个非常熟悉Hadoop系统的人,他也基本不可能记住所有的配置以及相应的作用描述吧。
虽然说有的时候我们有这么多的配置项,但是按照大类型来划分的话,可以归纳为以下两类:
- 第一类,环境定义型配置,比如各种address,hostname,bing host,port等等。
- 第二类,组件行为定义型配置,比如timeout