go-trace设计

一、为什么要传递trace信息?

   现在微服务开发已经成为主流,从用户发起请求到最终返回结果,中间可能会跨越好几个服务,调用链路会非常长,因为无法把用户请求上下游串联起来所以定位问题就会非常头疼,所以就需要通过trace信息把用户完整请求链路串联起来

   主要目的:1、后期全链路追踪

                     2、快速排查定位问题

                     3、设置链路最长执行时间,超时自动返回,防止由于下游服务调用异常引起雪崩效应

二、trace传递规范流程

   1、traceId单次请求上下游调用链路中全局唯一

   2、spanId当前服务唯一

   3、cspanId代表下游服务的spanId,由调用方生成并传递给下游服务

在这里插入图片描述

三、trace怎么传?

   rpc调用:

        1、接口定义时第一个参数为trace信息,上游调用时必传

        2、服务接口内部接收trace信息,并保存到context中

        3、内部函数调用时需要把context传递到下游函数

        4、日志打印时需要额外增加trace信息打印

  http调用: 把trace信息放入http请求header头,被调用方解析header即可获取trace信息

四、trace结构定义
在这里插入图片描述

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/8ff068aa014a4b608f7282b3a14a1a47.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGl1cXVuMDMxOQ==,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)

五、使用方法

 1、服务接口定义时第一个参数传递trace信息

在这里插入图片描述

2、服务内部

在这里插入图片描述

六、go-trace源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值