• 高峰
    2018-09-10
    请教老师,如果添加cat代码到 业务代码中 和spring 里面调用数据库 事务有冲突么? 如果直接加try catch 出现异常可能不会rollback 。 还是说cat 代码在 spring mvc controller 加?

    作者回复: 未听说cat和spring里头事务有冲突说法,你用cat的try catch埋点后,具体异常仍可向外抛出,让spring事务rollback机制生效

    
     2
  • superfq
    2018-10-16
    请教老师,从最后的demo代码来看cat是严重代码侵入的,这样的业务代码中会混入很多cat代码,请问老师使用cat有没有什么最佳实践能够尽可能少的侵入业务代码?

    作者回复: cat本身设计是侵入式的,侵入有利有弊,性能会更好,要改代码是弊。实践中尽量在框架层埋点,让集中框架团队埋好,对业务团队尽量透明,一般业务研发基本不用埋点。另外可以对cat客户端做AOP封装(如spring),SPI封装(可参考apollo做法),也可减少侵入性。

    
     1
  • 张爽
    2020-02-06
    详细的看了一下cat的集群部署文档(3.0), cat的整体架构设计是client-server的模式,但文档并未详细说明各配置及目录在哪一端使用,有如下疑问
    1、/data/{appdatas,applogs}/cat是否client跟server端都需要创建?
    2、/data/appdatas/cat目录下client.xml仅client端创建即可?
    3、/data/appdatas/cat目录下datasources.xml仅server端创建即可?
    4、/data/applogs/cat目录仅server端才会写入日志?
    5、http://10.1.1.1:8080/cat/s/config?op=routerConfigUpdate 客户端路由配置的作用是什么,是否要跟client.xml里面的ip必须保持一致?
    6、配置的问题

    client.xml

    <?xml version="1.0" encoding="utf-8"?>
    <config mode="client">
        <servers>
            <server ip="10.1.1.1" port="2280" http-port="8080"/>
            <server ip="10.1.1.2" port="2280" http-port="8080"/>
            <server ip="10.1.1.3" port="2280" http-port="8080"/>
        </servers>
    </config>

    客户端路由配置:
    <?xml version="1.0" encoding="utf-8"?>
    <router-config backup-server="10.1.1.1" backup-server-port="2280">
       <default-server id="10.1.1.1" weight="1.0" port="2280" enable="false"/>
       <default-server id="10.1.1.2" weight="1.0" port="2280" enable="true"/>
       <default-server id="10.1.1.3" weight="1.0" port="2280" enable="true"/>
       <network-policy id="default" title="default" block="false" server-group="default_group">
       </network-policy>
       <server-group id="default_group" title="default-group">
          <group-server id="10.1.1.2"/>
          <group-server id="10.1.1.3"/>
       </server-group>
       <domain id="cat">
          <group id="default">
             <server id="10.1.1.2" port="2280" weight="1.0"/>
             <server id="10.1.1.3" port="2280" weight="1.0"/>
          </group>
       </domain>
    </router-config>

    enable=false表示机器不可用,10.1.1.1机器不做为消费机集群,若客户端使用10.1.1.1:2280上报数据时是否会出现问题?

    还请老师解答,谢谢
    展开

    作者回复: 回复你的问题,用[bobo]标注:
    1、/data/{appdatas,applogs}/cat是否client跟server端都需要创建?
    [bobo]:server要,client只需appdatas(不放心,client建个applogs也没关系)
    2、/data/appdatas/cat目录下client.xml仅client端创建即可?
    [bobo]:server/client都要,因为server里头也内嵌了一个client,会自检发送server内部的trace数据。
    3、/data/appdatas/cat目录下datasources.xml仅server端创建即可?
    [bobo]:对,只有server要。
    4、/data/applogs/cat目录仅server端才会写入日志?
    [bobo]:对,只有server写入(不放心可实际确认)
    5、http://10.1.1.1:8080/cat/s/config?op=routerConfigUpdate 客户端路由配置的作用是什么,是否要跟client.xml里面的ip必须保持一致?
    [bobo]:为了对client进行一些动态配置(不需要一个一个去改client),比如重新调整CAT server的地址(比如CAT扩容,维护腾挪等)。刚开始建议一致,后面可能动态调整后不一致。
    6、配置的问题

    client.xml

    <?xml version="1.0" encoding="utf-8"?>
    <config mode="client">
        <servers>
            <server ip="10.1.1.1" port="2280" http-port="8080"/>
            <server ip="10.1.1.2" port="2280" http-port="8080"/>
            <server ip="10.1.1.3" port="2280" http-port="8080"/>
        </servers>
    </config>

    客户端路由配置:
    <?xml version="1.0" encoding="utf-8"?>
    <router-config backup-server="10.1.1.1" backup-server-port="2280">
       <default-server id="10.1.1.1" weight="1.0" port="2280" enable="false"/>
       <default-server id="10.1.1.2" weight="1.0" port="2280" enable="true"/>
       <default-server id="10.1.1.3" weight="1.0" port="2280" enable="true"/>
       <network-policy id="default" title="default" block="false" server-group="default_group">
       </network-policy>
       <server-group id="default_group" title="default-group">
          <group-server id="10.1.1.2"/>
          <group-server id="10.1.1.3"/>
       </server-group>
       <domain id="cat">
          <group id="default">
             <server id="10.1.1.2" port="2280" weight="1.0"/>
             <server id="10.1.1.3" port="2280" weight="1.0"/>
          </group>
       </domain>
    </router-config>

    enable=false表示机器不可用,10.1.1.1机器不做为消费机集群,若客户端使用10.1.1.1:2280上报数据时是否会出现问题?
    [bobo]这个动态配置生效后,client压根就不会向10.1.1.1发送trace数据。

    
    
  • 在路上
    2019-09-24
    老师,原始的监控信息存储在HDFS中,数据的有效期一般设置多少合适呢?

    作者回复: 这个每家公司不同,看你的资源富裕情况和审计要求,短的放两周或一个月,长的可放三个月甚至半年以上的。

    
    
  • 西兹兹
    2018-12-18
    文中提到 queue里的数据是通过 send线程发送到cat服务器端;
    如果重启系统, 那还没来得及消费的queue里的跟踪数据是否丢失了呢?
    cat是否有本地文件系统存储未上报的数据?

    作者回复: CAT客户端trace缓存在内存中,以一定周期(秒级)向服务器发送,如系统重启,可能很少量丢数据,但完全不丢数据不是CAT(包括其它监控系统)首要设计目标,少量数据的偶尔丢失,并不影响统计趋势性监控。

    
    
  • Single
    2018-09-24
    请教老师,客户端埋点时,主线程起了子线程,子线程里的调用能否正常上报,并和主线程调用链连起来呢?

    作者回复: 可以,属于异步调用,相当于跨进程调用,需要在线程间传递调用链上下文context。这种调用链呈现比较复杂,线程之间没有明确时序关系,一般不建议。调用链监控主要适用于同步调用场景。

    
    
我们在线,来聊聊吧