暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CAT源码分析(一)——环境搭建

贰级天災 2018-09-19
753

CAT开源地址:https://github.com/dianping/cat。

第一步:拉取代码,结构如下图所示。
直接拉取下来的CAT默认使用jdk1.5,这会导致代码报错,需要手动更改项目编码到1.6即以上(我使用的是1.8)。并且修改pom文件,添加:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

复制


第二步:找到script目录,将Cat.sql导入到mysql中。这里遇到个小问题,我一开始下载的mysql8.0,选择密码方式的时候没注意选了加密版的,导致输入密码正确却连不上数据库,到最后启动失败。

在项目所在目录创建/data/appdatas/cat文件夹,将script文件夹中剩余三个文件copy过去,并根据自己的环境修改参数即可。
我的配置:
client.xml

datasources.xml

<?xml version="1.0" encoding="utf-8"?>
<data-sources>    <data-source id="cat">        <maximum-pool-size>3</maximum-pool-size>        <connection-timeout>5s</connection-timeout>        <idle-timeout>10m</idle-timeout>        <statement-cache-size>200</statement-cache-size>        <properties>            <driver>com.mysql.jdbc.Driver</driver>            <url><![CDATA[jdbc:mysql://localhost:3306/cat]]></url>            <user>root</user>            <password>****</password>            <connectionProperties><![CDATA[useUnicode=true&autoReconnect=true&useSSL=false]]></connectionProperties>        </properties>    </data-source>    <data-source id="app">        <maximum-pool-size>3</maximum-pool-size>        <connection-timeout>5s</connection-timeout>        <idle-timeout>10m</idle-timeout>        <statement-cache-size>200</statement-cache-size>        <properties>            <driver>com.mysql.jdbc.Driver</driver>            <url><![CDATA[jdbc:mysql://localhost:3306/cat]]></url>            <user>root</user>            <password>****</password>            <connectionProperties><![CDATA[useUnicode=true&autoReconnect=true&useSSL=false]]></connectionProperties>        </properties>    </data-source>
</data-sources>

复制

server.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Configuration for development environment-->
<config local-mode="false" hdfs-machine="false" job-machine="false" alert-machine="false">        <storage  local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7">        </storage>    <console default-domain="Cat" show-cat-domain="true">        <remote-servers>localhost:8080</remote-servers>            </console>    
</config>

复制

第三步:执行mvn clean install -Dmaven.test.skip=true打包。
打开启动配置,添加本地tomcat,以便debug了解源码流程。



接着运行tomcat即可,再浏览器输入http://localhost:8080/cat/r/t?domain=cat即可查看。

第四步:自己写一个客户端测试CAT能否成功记录。

CAT默认是通过DefaultClientConfigManager类的loadProjectName方法读取/META-INF/app.properties里面的属性,不想专门建一个工程,可以直接修改该方法返回值。

测试代码:


import com.dianping.cat.Cat;import com.dianping.cat.message.MessageProducer;import com.dianping.cat.message.Transaction;import com.dianping.cat.message.internal.DefaultTransaction;public class Test {    static int count;    public static void main(String[] args) throws InterruptedException {        for (; ; ) {            if (count < 10) {
                Cat.logEvent("test", "test");
                Transaction transaction = Cat.getProducer().newTransaction("MyTrans", "test");
                transaction.setStatus(Transaction.SUCCESS);
                transaction.complete();
                Thread.sleep(1000L);
                count++;
            } else {
                Thread.sleep(10000L);
            }
        }
    }
}
复制



查看CAT。


文章转载自贰级天災,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论