自定义request链路跟踪
2019独角兽企业重金招聘Python工程师标准>>>
1.自定义注解类
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Trace {String businessName() default "";}
2.在需要拦截的方法上加自定义注解@Trace
@Trace(businessName = "线上复核扫描出库单号") @Token @RequestMapping(value = "/mst-obd-review/checkorderno", method = {RequestMethod.POST, RequestMethod.GET}) public RespJson checkorderno(@RequestParam("orderNo") String orderNo,HttpServletRequest request) { ...
3.自定义拦截器
public class RpcTraceInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {TraceContext traceContext = (TraceContext) TraceContext.ctx.get();//清除traceidtraceContext.clear();//重新生成traceidMDC.put("traceId", traceContext.getTraceId());return super.preHandle(request, response, handler);}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {//请求结束情况traceidMDC.remove("traceId");super.afterCompletion(request, response, handler, ex);} }
public class TraceContext {public static ThreadLocal ctx = new InheritableThreadLocal() { //此处用InheritableThreadLocal保证可以在子线程得到相同的traceId@Overrideprotected TraceContext initialValue() {return new TraceContext();}};private String traceId;public String getTraceId() {if (traceId == null || "".equals(traceId)) {int hashCodeV = UUID.randomUUID().toString().hashCode();if (hashCodeV < 0) {//有可能是负数hashCodeV = -hashCodeV;}// 0 代表前面补充0// 4 代表长度为4// d 代表参数为正数型traceId = String.format("%012d", hashCodeV);}return traceId;}public void clear() {traceId = null;} }
转载于:https://my.oschina.net/u/2485283/blog/1859320
自定义request链路跟踪相关推荐
- 使用zipKin构建NetCore分布式链路跟踪
本文主要讲解使用ZipKin构建NetCore分布式链路跟踪 场景 因为最近公司业务量增加,而项目也需要增大部署数量,K8S中Pod基本都扩容了一倍,新增了若干物理机,部分物理机网络通信存在问题,导致 ...
- ASP.NET Core整合Zipkin链路跟踪
前言 在日常使用ASP.NET Core的开发或学习中,如果有需要使用链路跟踪系统,大多数情况下会优先选择SkyAPM.我们之前也说过SkyAPM设计确实比较优秀,巧妙的利用DiagnosticSou ...
- gogoclient java_链路跟踪-GRPC请求 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...
在本章节中,我们将之前介绍HTTP Client&Server的示例修改为GRPC微服务,并演示如何使用GoFrame框架开发一个简单的GRPC服务端和客户端,并且为GRPC微服务增加链路跟踪 ...
- 全链路跟踪之线程上下文Thread Local实战(完整源码)
写在开头: 我是「猿码天地」,一个热爱技术.热爱编程的IT猿.技术是开源的,知识是共享的! 写博客是对自己学习的总结和记录,如果您对Java.分布式.微服务.中间件.Spring Boot.Sprin ...
- 11|链路追踪:如何定制一个分布式链路跟踪系统?
11|链路追踪:如何定制一个分布式链路跟踪系统 ? 你好,我是徐长龙,这节课我们讲一讲如何实现分布式链路跟踪. 分布式链路跟踪服务属于写多读少的服务,是我们线上排查问题的重要支撑.我经历过的一个系统, ...
- 微服务分布式架构中,如何实现日志链路跟踪
摘要:接口设计出来返回结果值和编码,还有哪些是需要我们优化的结果参数?微服务分布式架构中,如何实现日志链路跟踪? 本文分享自华为云社区<微服务分布式架构中,如何实现日志链路跟踪?>,作者: ...
- scrapy自定义Request的缓存策略(减少内存占用)
scrapy-redis大概的架构: 从redis中拉url,构造Request对象,写入SCHEDULER_QUEUE_CLASS定义的队列中,调度器从队列中拉取Request进行抓取 想自定义Re ...
- kong插件应用(熔断 限流,黑白名单,认证(basic,key,jwt,hmac,),授权,加密,zipkin链路跟踪,日志, prometheus可视化, 爬虫控制插件)
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 kong安装部署以及kong-dashboard参考:https://blog.csdn.net/luanpeng825485697/article/ ...
- Spring Cloud--Sleuth+Zipkin 链路跟踪/订单的流量削峰
Sleuth 产生链路跟踪日志 A --> B --> C A的id会被当做整条链路的id 默认只有10%的日志会发到Zipkin A, USFHSAJFGVDMJ, USFHSAJFGV ...
最新文章
- MATLAB编程规范
- 面试中 项目遇见的难点答案_2019 百度、头条、小米、360、网易、拼多多等公司 Android 社招面试心得...
- apache 配置虚拟目录
- janusgraph整合mysql_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构
- c语言告白恋爱专业,C语言实现520表白代码 祝你表白成功!
- tomcat中多个域名配置
- 【SICP练习】71 练习2.42
- 全网首发:java[50077:153519] Cocoa AWT: Not running on AppKit thread 0 when expected. libawt_lwawt.dylib
- 在鼠标右键菜单栏添加notepad++打开方式
- 男cd是啥意思_伪娘cd是什么意思
- 很开心你能来,不遗憾你走开
- 7-2 查询水果价格 (15 分)
- 两年工作经验的后端开发的工作方法小结
- RF在智能座舱测试中的应用
- 3.0时代,公关传播在人文营销中的应用
- C++控制台模拟 骇客帝国数字飞屏
- win10消息推送服务器,推送--Win10系统 - Win10系统官方网站
- 安装和使用WebStorm、idea (两者步骤是一样的)
- 用pymysql制作一个同学录小程序
- MySQL表空间碎片整理
热门文章
- 使用PagedDataSource类实现DataList和Repeater控件的分页显示
- 诗和远方:无题(四十六)
- Android之使用MediaMetadataRetriever类获取媒体信息
- Java中List与数组互相转换
- Spring,SpringMvc初始化监听配置
- python无条件跳转_python按按钮实现界面跳转_python实现界面跳转 - CSDN
- nvm安装npm出错问题解决方案
- 计算机应用基础第二版在线作业一,计算机应用基础在线作业一
- Ansible结合跳板机控制远程服务器
- vue+node全栈移动商城【6】-node接口配置文件