深入详解美团点评CAT跨语言服务监控(五)配置与数据库操作

本文深入探讨了美团点评CAT(Cat横幅广告系统)的配置管理,包括从数据库读取和解析XML配置,如serverFilter,以及如何初始化配置。文章还介绍了CAT的代码生成插件用于自动生成实体类,以及数据库操作,如Config表的使用。此外,文章提到了数据库操作的类图,Dao类与QueryEngine的交互,以及数据库连接管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇:CAT跨语言服务链监控(四)服务端消息分发             下一篇:CAT跨语言服务链监控(六)消息分析器与报表(一)

CAT配置

在CAT中,有非常多的配置去指导监控的行为,每个配置都有相应的配置管理类来管理,都有一个配置名, 配置在数据库或者配置文件中都是以xml格式存储,在运行时会被解析到具体实体类存储。我们选取一个配置的初始化代码来分析:

public class ServerFilterConfigManager implements Initializable {
    @Inject
    protected ConfigDao m_configDao;
    
    private volatile ServerFilterConfig m_config;
    
    private static final String CONFIG_NAME = "serverFilter";
    
    @Override
    public void initialize() throws InitializationException {
        try {
            Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL);
            String content = config.getContent();

            m_configId = config.getId();
            m_modifyTime = config.getModifyDate().getTime();
            m_config = DefaultSaxParser.parse(content);
        } catch (DalNotFoundException e) {
            try {
                String content = m_fetcher.getConfigContent(CONFIG_NAME);
                Config config = m_configDao.createLocal();

                config.setName(CONFIG_NAME);
                config.setContent(content);
                m_configDao.insert(config);
                m_configId = config.getId();
                m_config = DefaultSaxParser.parse(content);
            } catch (Exception ex) {
                Cat.logError(ex);
            }
        } catch (Exception e) {
            Cat.logError(e);
        }
        if (m_config == null) {
            m_config = new ServerFilterConfig();
        }
        Threads.forGroup("cat").start(new ConfigReloadTask());
    }
}

以上代码是serverFilter配置的初始化逻辑,该配置的管理类是ServerFilterConfigManager,可以看到他实现了Initializable接口,所以,在ServerFilterConfigManager被plexus容器实例化之后,就会调用initialize()做一些初始化的工作,咱们看看他的初始化逻辑。

1、他首先读取cat数据库的config表,如果根据配置名 CONFIG_NAME 找到相关的配置信息。

2、如果 config 表中存在配置信息,则通过 DefaultSaxParser.parse(content) 方法解析xml配置信息,并将解析后的配置信息写入实体对象ServerFilterConfig m_config,我们的xml配置文件必须遵守CAT的解析规则,他们才会被正确的解析成对应的XxxConfig对象,具体配置规则大家在有需要的时候一步步摸索。

3、如果 config 表中不存在配置信息,就会去读取默认 xml 文件, 解析后写入到数据库和实体对象,下次再初始化的时候就是直接从数据库读取了,xml一般存在于cat-core/src/main/resources/config/ 和 cat-home/src/main/resources/config/ 两个目录。

4、其中有两个配置 serverFilter 和 aggreationConfig, 开启了检查更新线程,线程每隔1分钟检查配置是否更新,有更新就重新加载配置。

5、server.xml 配置文件的目录是由环境变量 CAT_HOME指定的,由CatHomeModule在setup安装的时候初始化。

我们来列一列cat有哪些配置

 

配置名 配置管理类 实体类 配置文件cat-xxxx/src/main/resources/config/*.xml 用途
ServerConfigManager ServerConfigManager ServerConfig 环境变量 CAT_HOME/server.xml 未知
serverFilter ServerFilterConfigManager ServerFilterConfig cat-core/..../serverFilter.xml 未知
all-report-config AllReportConfigManager AllConfig cat-home/..../all-report-config.xml 未知
metricProductLine ProductLineConfigManager ProductLineConfig cat-home/..../metricProductLine.xml 未知
userProductLine ProductLineConfigManager ProductLineConfig cat-home/..../userProductLine.xml 未知
applicationProductLine ProductLineConfigManager ProductLineConfig cat-home/..../applicationProductLine.xml 未知
networkProductLine ProductLineConfigManager ProductLineConfig cat-home/..../networkProductLine.xml 未知
systemProductLine ProductLineConfigManager ProductLineConfig cat-home/..../systemProductLine.xml 未知
databaseProductLine ProductLineConfigManager ProductLineConfig cat-home/..../databaseProductLine.xml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值