springCloud微服务系列——链路跟踪第二篇——mvc链路跟踪器

目录

 

一、简介

二、思路

三、spring mvc

四、示例代码


一、简介

     这篇文章总结一下mvc链路跟踪器的实现,这篇文章的内容相对比较简单。

二、思路

      上一篇文章其实已经顺带把mvc链路跟踪器的思路说了

      1、初始化上下文,新建ThreadLoacal

      2、从http中获取traceId信息

           如果有说明是被别的服务调用,将http中的traceId和rpceId保存到上下文

           如果没有说明请求来自于客户端,新建链路跟踪信息,保存到上下文

      3、处理结束后将上下文销毁

《springCloud微服务系列——链路跟踪第一篇——设计思路以及通用链路跟踪器》

三、spring mvc

      如果controller层为spring mvc,那么可以使用拦截器拦截请求进行链路跟踪,非常简单。

四、示例代码

public class MvcTracker implements Tracker<MvcHolder> {

	private static final FastDateFormat ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
	
	protected static final String BEGIN_TIME_KEY = "beginTime";
	
	protected static final String RPC_TRACE_INFO_VO_KEY = "rpcTraceInfoVO";
	
	protected TraceClient traceClient;
	
	public MvcTracker(TraceClient traceClient) {
		this.traceClient = traceClient;
	}
	
	@Override
	public void preHandle(MvcHolder holder) {
		initTraceData(holder.getRequest(), holder.getHandler(), holder.getProfile());
	}
	
	@Override
	public void postHandle(MvcHolder holder) {
		finishTraceData(holder.getRequest(), holder.getResponse(), holder.getException());
	}
	
	private void initTraceData (HttpServletRequest request, Object handler, String profile) {
		// 开始时间
		req
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值