Cat 跨线程之 ForkedTransaction 用法和原理分析

springboot接入大众点评Cat平台 文章目录1. Cat简介2. 应用架构图3. 项目配置 1. Cat简介 CAT(Central Application Tracking)基于Java开发的实时监控平台,主要包括移动端监控,应用侧监控,核心网络层监控,系统层监控等。是一个提供实时监控报警,应用性能分析诊断的工具。 主要有如下功能: 机器状态信息:CPU负载、内存信息、磁盘使用率等服务器信息及线程栈、堆、垃圾回收等应用进程信息;... 阅读详情

package com.dianping.cat.message.internal;

import com.dianping.cat.Cat;
import com.dianping.cat.message.ForkedTransaction;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Transaction;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.unidal.helper.Threads;

import java.io.File;
import java.util.concurrent.TimeUnit;

public class MultiThreadingTest {
    @After
    public void after() {
    }

    @Before
    public void before() {
        Cat.initialize(new File("/data/appdatas/cat/client.xml"));
    }

    @Test
    public void testForkedTransaction() throws Exception {
        Transaction t = Cat.newTransaction("ForkedRoot", "Root");
        ForkedTransaction t1 = Cat.newForkedTransaction("ForkedChild", "Child1"); //在当前消息树中埋点桥接节点
        Threads.forGroup().start(new TimedThread(t1, 100)); //与子线程共享这个对象
        TimeUnit.MILLISECONDS.sleep(200);
        t.setStatus(Message.SUCCESS);
        t.complete();
    }

    static class TimedThread extends Thread {
        private ForkedTransaction m_transaction;

        private int m_timeout;

        public TimedThread(ForkedTransaction t, int timeout) {
            m_transaction = t;
            m_timeout = timeout;
        }

        @Override
        public void run() {
            m_transaction.fork();
            try {
                TimeUnit.MILLISECONDS.sleep(m_timeout);
                Cat.logEvent("TimedThread", "Timeout." + m_timeout);
                m_transaction.setStatus(Message.SUCCESS);
            } catch (Exception e) {
                Cat.logError(e);
                m_transaction.setStatus(e);
            } finally {
                m_transaction.complete();
            }
        }
    }
}

复制代码

模型图

代码和流程分析

new一个ForkT在干嘛?
1.初始化当前线程的消息树根节点消息Id
2.创建子线程中的事务,并设置自己的根节点和父节点的消息Id
3.在消息树的当前节点加入一个额外的event节点,并且把子线程的msgId记录下来

linkasRunAway的具体逻辑

子线程的fork在干嘛?

1.在子线程中初始化本线程的消息树

2. 把forkT的消息id作为子线程的根节点消息id,这样就可以通过runway event节点找到子线程的消息树

Cat(4):API介绍—Transaction 上面的代码中,开启了两个Transaction,其中第一个Transaction为Controller接收到的接口调用,第二个位我们编写的本地方法dubbo用来模拟远程调用。Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。如图所示调用链已经形成,可以看到类型为URL的test调用了类型为DUBBO的dubbo方法,分别耗时0.02ms和0.01ms。 阅读详情

相关推荐

蓝桥杯历年真题分类汇总(史上最全版本,一定不要错过)

天再高又怎样,踮起脚尖就更接近阳光。 满满的 题型总结​ 历年真题​ 视频讲解​ 比赛技巧 题型总结 2021 2020 2019 2018 2017 2016 2015 2014 2013 ...

m0_58367586的博客 11万+

Cat事务管理详解

在高并发系统中,建议结合 AOP 和自定义工具类,减少手动编写 CAT 代码的工作量,同时确保监控数据的完整性。指标(Metric)** 三大组件,实现跨服务调用的全链路追踪和性能监控。是 CAT 的核心机制,用于记录和分析业务操作的执行路径、耗时及异常情况。统计操作耗时、成功率,构建调用链路树,为性能分析和故障排查提供依据。CAT 事务管理是实现分布式系统全链路监控的核心机制,通过合理使用。事务是 CAT 中最基本的监控单元,表示一个具有。是美团开源的分布式应用监控系统,核心功能是通过。

weixin_51506966的博客 1280

泰森多面体Voronoi 3D-V5.0 功能介绍

Abaqus Voronoi3D

qq_34840441的博客 3365

基于Cat的分布式调用追踪

Cat是美团点评出的一款APM工具,同类的产品也有不少,知名的开源产品如zipkin和pinpoint;国内收费的产品如oneapm。考虑到Cat在互联网公司的应用比较广,因此被纳入选型队列,我也有幸参与技术预言。 使用Cat断断续续将近两周的时间,感觉它还算是很轻量级的。文档相对来说薄弱一些,没有太全面的官方文档(官方文档大多是介绍每个名词是什么意思,界面是什么意思,部署方面比较欠缺);但是...

weixin_34166847的博客 767

基于小波变换的信号降噪处理及仿真研究_信号处理方法推荐--1(转载自用,侵删)...

综述作者:aresmiki链接:https://www.zhihu.com/question/23701194/answer/167005497来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。非平稳信号处理应该是现在信号处理技术最新的也是最热的研究方向了,信号处理方法从最早的时域统计到傅里叶变换的频域分析,是人们认识信号本质的一次巨大飞跃,给了分析人员换个角度看世界的...

weixin_32144483的博客 1249

ICML-2025《Learning from Sample Stability for Deep Clustering》

用于指导深度聚类模型的训练,从而提升模型对困难样本的学习能力,最终改善整体聚类性能。首先,利用K-means在原始样本(非增强)的表征上进行聚类,得到初始聚类分配。其目的是鼓励模型对同一稳定样本在连续epoch中产生相近的表征。输出差异大)会产生更大的损失值,从而引导模型优先优化这些困难样本。此损失借鉴了NT-Xent损失的思想,但将正样本对定义为。最后,通过对比学习优化聚类中心,将同一聚类在。为了获得更具代表性的聚类中心,论文提出。为了学习更鲁棒的表征,模型在在线网络。首先,论文定义了样本。

Christo的博客 830

CAT 实时监控

一、 CAT概要 1.CAT是什么? CAT(Central Application Tracking)是基于Java开发的实时应用监控平台,提供了全面的监控服务和业务决策支持。 2.CAT作用 2.1. 故障快速发现:主要面向运维,让运维直观到生产环境出现的问题; 2.2. 系统问题分析:面向开发,让开发能了解自己系统实时运行状态、发现问题。 3.CAT报表展示消息类型 3.1. T

NullException 3万+

【UE5】RTS游戏的框选功能+行军线效果实现

步骤: 一、项目准备; 二、框选NPC并移动到指定地点; 三、框选效果; 四、行军线效果

ChaoChao66666的博客 2379

Java并发编程实践笔记

1, 保证线程安全的三种方法: a, 不要跨线程访问共享变量b, 使共享变量是final类型的c, 将共享变量的操作加上同步   2, 一开始就将类设计成线程安全的, 比在后期重新修复它,更容易.   3, 编写多线程程序, 首先保证它是正确的, 其次再考虑性能.   4, 无状态或只读对象永远是线程安全的.   5, 不要将一个共享变量裸露在多线程环境下(无同步或不可变性

Flyer的后花园 1058

012、乘累加单元(MAC):NPU中最基本的计算单元

本文深入剖析了神经网络处理器(NPU)中的核心计算单元——乘累加单元(MAC)。作者通过实际调试案例揭示了MAC单元设计中的关键问题:定点数格式对齐、累加器位宽陷阱、流水线优化和多MAC同步方案。重点讨论了INT8量化中的边界条件处理、偏置项截断风险以及零值检测等实战经验,并提供了三点实用建议:建立精确的C模型、参考RISC-V P扩展指令集、仔细审查芯片规格书。文章强调硬件加速的实际瓶颈往往在于数据搬运而非计算单元本身,为NPU开发者提供了宝贵的工程实践参考。

m0_50546716的博客 298

手把手教你学Simulink--使用Simulink进行双冗余电机驱动系统的故障切换验证

提高系统可靠性:当一个电机或其驱动器出现故障时,另一个可以立即接管,避免系统停机。增强安全性:对于一些关键任务的应用场景(如飞行控制),确保即使在硬件故障情况下也能维持基本操作能力。简化维护:允许在不影响系统正常工作的情况下进行维护和更换故障部件。确定可能发生的故障类型(如过流、欠压、温度过高),以及每种故障对应的条件。通过上述步骤,我们简要介绍了如何基于Simulink实现双冗余电机驱动系统的故障切换验证。

MHD0815的博客 444

CAT 组件Transaction报表

用途:允许用户根据需要筛选报表中的数据。内容:按时间范围、交易类型、错误类型等过滤条件。

qq_33240556的博客 693

一根同轴线,真的扛得住 4K 吗? ——从摄像头带宽算起,聊透车载 SerDes 接口选型

如果你记住这三句话,这篇文章就值了:🎯摄像头带宽 = 分辨率 × 位深 × fps × 开销4K RAW 摄像头 ≈ 3.7Gbps,是现实不是理论SerDes 选型,宁可多留 20%,不要刚刚好。

weixin_43199439的博客 193

深入详解美团点评CAT跨语言服务监控(三)CAT客户端原理

上一篇:CAT跨语言服务链监控(二) CAT服务端初始化 下一篇:CAT跨语言服务链监控(四)服务端消息分发 CAT客户端实现 cat客户端部分核心类 message目录下面有消息相关的部分接口 internal目录包含主要的CAT客户端内部实现类; io目录包含建立服务端连接、重连、消息队列监听、上报等io实现类; spi目录为上报消息工具包,包含消息二进制编解码、...

caohao0591的专栏 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

CAT介绍

1.CAT的定位 CAT是点评开源的一个实时监控系统,主要体现在监控报表Transaction、event、problem、heartbeat等,cat系统定制的监控模型以及定制的实时分析报表也是cat系统核心优势。这里强调了CAT相比于其他系统的二开优势。 这也是我选择CAT作为公司正式环境实时监控系统的一个主要原因。相较于其他APM监控系统,大部分使用的是字节码agent技术。公司现在研发对agent以及字节码技术掌握度不高。使用这些技术的链路追踪系统在公司现在的环境下很难进行定制以及维护。 .

2163

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Cat原理简析

深入浅出Cat原理

m0_53157173的博客 2074

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

熬夜之作:一文带你了解Cat分布式监控

Cat 是什么? CAT(Central Application Tracking)是基于 Java 开发的实时应用监控平台,包括实时应用监控,业务监控。 CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。 CAT 很大的优势是它是一个实时系统,CAT 大

u010889990的专栏 2030

AOP实战:高效解耦业务与监控

摘要:AOP(面向切面编程)是一种抽取非业务代码(如日志、事务)的技术,通过动态代理实现方法增强。文章展示了如何利用AOP实现Cat监控埋点和统一异常处理,包括定义注解和切面类。其中CatMonitor切面通过环绕通知上报方法执行数据,而ExceptionHandle切面则捕获并记录异常。同时指出AOP失效场景,如非Spring管理的Bean、私有方法、内部调用等。两个切面通过Order控制执行顺序,确保监控逻辑包裹异常处理。

hjkyhgbyhv的博客 422

CAT的Client端发送消息

1. 生产消息newTransaction,检查上下文ThreadLocal<Context>是否已经初始化,没有则通过m_manager.setup()初始化。初始化消息DefaultTransaction,转交给默认消息管理开始消息处理,m_manager.start(transaction, false);如果是该线程的第一个消息则保存在MessageTree public ...

1012

springboot项目集成大众点评cat

什么是CAT Cat是基于Java开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务 • CAT作为服务端项目基础组件,提供了java, c/c++, node, python, go等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。 • CAT很大的优势是它是一个实时系统,CAT大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级...

u013262689的专栏 619

美团 Cat 源码文章

注意的地方: 1,Cat使用的是plexus作为底层容器,又在此容器基础之上封装了一个容器叫org.unidal.framework。一些Web请求应该都是通过框架接收的。2,有一些Dao是在GenerateSource后才能生成的。透过CAT,来看分布式实时监控系统的设计与实现:Cat的访谈介绍 官方文档:先把官方文档读一下,看看已经提供了什么。 基于Cat的分布式调用追踪:如何进行埋点的例

冲吧,不要停! 3659

springboot集成点评cat监控

1. 引包 <!-- 点评cat--> <dependency> <groupId>com.dianping.cat</groupId> <artifactId>cat-client</artifactId> <version>3.0.0</version> </dependency> 2. 引入cat的核心过滤器 import com.dianping.cat

叶子来啦 1766

美团cat监控在hystrix线程池模式解决多线程切换问题

解决方案 1> extrends HystrixConcurrencyStrategy 自定义Runable = com.alibaba.ttl.TtlRunnable.get(command) 2> 修改cat-client客户端源码,修改threadLocal变量为 com.alibaba.ttl.TransmittableThreadLocal 经过验证,此方式可行,多线程切换没有出现数据混乱问题 ...

ggjess的专栏 621

springboot2.1.3,集成cat,本人多次测试,可以运行

1,maven依赖,少了一个,你会出现各种报错 <!-- cat --> <dependency> <groupId>com.dianping.cat</groupId> <artifactId>cat-client</artifactId> <version>3.0.0</version> </dependency> <dependency> &lt

liuxianwen1990的博客 586
上一篇: 三元表达式 一个优先级的问题
下一篇: kafka副本机制之数据可靠性
琅琊山二当家
博客等级 码龄18年 447粉丝 322原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值