pinpoint源码分析

原创
2018/01/21 23:07
阅读数 1.2K

格式待优化 分布式跟踪系统(实现原理) 启动流程图 TODO JAVA Instrumentation(jdk提供支持) TODO ASM 字节码增强(aop实现) TODO 分布式(SpanId)

例如ActiveMQMessage 在生产者 ActiveMQMessageProducerSendInterceptor public void before(Object target, Object[] args) 在里面组装利用ActiveMQClientHeader 在MQmess中设置跟踪信息 ActiveMQClientHeader.setTraceId(message, nextId.getTransactionId()); setMessage(Message message, ActiveMQClientHeader key, T value){ 反射设置 ActiveMQMessage activeMQMessage = (ActiveMQMessage) message; activeMQMessage.setReadOnlyProperties(false); setMessage0(message, id, value); activeMQMessage.setReadOnlyProperties(true); }

在消费者 ActiveMQMessageConsumerDispatchInterceptor before(Object target, Object[] args) final Trace trace = createTrace(target, args); 实现,在mq的消息体中增加跟踪信息 MessageDispatch md = (MessageDispatch) args[0]; ActiveMQMessage message = (ActiveMQMessage) md.getMessage(); final TraceId traceId = populateTraceIdFromRequest(message);

其他分布式同理 只要分析里面的生产者,消费者的Interceptor

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
1 收藏
0
分享
返回顶部
顶部