Ambari Server 配置多版本功能实现分析
配置多版本 表关系图:
serviceconfig:服务配置表,version 最大的那条记录为 当前生效的配置
clusterconfig:配置文件表
serviceconfigmaping:服务和配置文件的对应关系表
举一个例子:
serviceconfig 表:
serviceconfigmaping 表:
clusterconfig 表:
假如有一个服务叫:TestService,它有两个配置文件:type1、type2。
1、首次安装服务之后:
serviceconfig 增加一行记录:service_config_id=53,version=1(version 最大的配置为当前生效的配置:service_config_id=53)
clusterconfig 增加两行记录,一个配置文件一行记录:config_id=54 代表配置文件 type1;config_id=55 代表配置文件 type2
serviceconfigmaping 增加两行记录:service_config_id=53 对应两个 config_id,54和55
2、这时候修改一下 type1 配置文件:
serviceconfig 增加一行记录:service_config_id=54,version=2(version 最大的配置为当前生效的配置:service_config_id=54)
clusterconfig 增加一行记录,代表刚才修改的 type1 配置:config_id=56
serviceconfigmaping 增加两行记录:service_config_id=54 对应两个 config_id,56和55(服务和配置的对应关系已经更新)
3、这时候又想切换 version=1 为当前生效的配置:
serviceconfig 增加一行记录:service_config_id=55,version=3(version 最大的配置为当前生效的配置:service_config_id=55)
clusterconfig 表不变
serviceconfigmaping 增加两行记录:service_config_id=55 对应两个 config_id,54和55(服务和配置的对应关系已经更新)