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(服务和配置的对应关系已经更新)

posted @ 2017-05-08 11:31  basenet855x  阅读(1543)  评论(0编辑  收藏  举报