码迷,mamicode.com
首页 > 其他好文 > 详细

zico代码分析 (草稿)

时间:2015-05-23 16:46:57      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

首先,明确一下,zico将收到的agent端的数据存储在zico/data文件下,目录结构如下图所示:

技术分享

tdat中存储的是host列表。

tidx:***

symbol.dat***

trace.db****

 

HostStore类代表一个agent的性能数据的存储(Represents performance data store for a single agent)。我们可以根据以下代码分析目录结构

    public synchronized void open() {
        try {
            load();
            if (symbolRegistry == null) {
                symbolRegistry = new PersistentSymbolRegistry(
                    new File(ZicoUtil.ensureDir(rootPath), "symbols.dat"));
            }

            if (traceDataStore == null) {
                traceDataStore = new TraceRecordStore(config, this, "tdat", 1, this);
            }

            if (traceIndexStore == null) {
                traceIndexStore = new TraceRecordStore(config, this, "tidx", 4);
            }

            db = dbf.openDB(ZorkaUtil.path(rootPath, "traces.db"));
            infos = db.getTreeMap(DB_INFO_MAP);
            tids = db.getTreeMap(DB_TIDS_MAP);
            attrs = db.getTreeMap(DB_ATTR_MAP);

        } catch (IOException e) {
            log.error("Cannot open host store " + name, e);
        }
    }

      PersistentSymbolRegistry类继承自SymbolRegistry类,而SymbolRegistry类中包含了两个Map(symbolIds以及symbolNames)。PersistentSymbolRegistry类中的open()方法会从symbol.dat文件中读取symbol,并put进symbolIds和symbolNames。

      TraceReocrdStore类在其构造函数中会新建一个RSSsotre(Raw Data Store (RDS) builds upon RAGZ stream classes)对象。在RSSsotre的open()方法中,会建立RAGZInputStream和RAGZOutputStream来读写RAGZSegment(represents a single in-memory segment)。RAGZSegment类有unpack()方法对数据进行解压,此处调用了java.util.zip包。

   对于trace.db文件使用了使用了org.parboiled.BaseParser。  http://parboiled.org。这是一个轻量级no-SQL数据库。

 

接下来应该弄清楚两点,第一,目录下每个文件中都存储的是什么信息  第二,什么地方用了HostStore.

--------------------------------------------------------------------------------------------------------------------------------------------------------------

在zico-core包的pom文件中, 有以下语句

        <dependency>
            <groupId>org.mapdb</groupId>
            <artifactId>mapdb</artifactId>
            <version>${mapdb.version}</version>
        </dependency>
       

此处将mapdb导入了maven项目。

 

 

DataReceptionUnitTest中可以看到HostStore中包含一个SymbolRegistry。

 

在解析表达式方面,使用了org.parboiled.BaseParser。  http://parboiled.org

tdat中存储的是host列表。

zico代码分析 (草稿)

标签:

原文地址:http://www.cnblogs.com/shuaiwang/p/4522905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!