Dubbo + Sleuth + Zipkin 链路追踪

一、简介

1、默认情况下,Spring Cloud Sleuth支持服务之间http请求的traceId的传递。如最为常见的Feign和RestTemplate等。不支持服务在dubbo调用之间传递,所以我们要扩展dubbo的Filter。

2、使用brave-instrumentation-dubbo-rpc组件来扩展dubbo的Filter。

二、Zipkin安装

1、下载:zipkin-server-2.12.9-exec.jar

2、启动:start.sh,访问地址:http://localhost:9411/

nohup java -jar zipkin-server-2.12.9-exec.jar &

三、代码

1、父工程pom

<!-- sleuth + zipkin dubbo版 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.brave</groupId>
    <artifactId>brave-instrumentation-dubbo-rpc</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
        </exclusion>
    </exclusions>
    <version>5.4.1</version>
</dependency>

2、在各服务的resources下创建META-INF目录,META-INF目录下创建dubbo目录,dubbo目录下创建org.apache.dubbo.rpc.Filter文件

# brave.dubbo.rpc.TracingFilter为brave-instrumentation-dubbo-rpc中的文件
traceFilter=brave.dubbo.rpc.TracingFilter

3、在各服务的yml文件中配置sleuth、zipkin 和 filter

#spring相关配置
spring:
  ...
  zipkin:
    enabled: true
    # zipkin的访问地址
    base-url: http://localhost:9411
    messageTimeout: 5
    sender:
      #向http发送trace信息
      type: web
  sleuth:
    sampler:
      # 采样率设置为1,接受所有请求
      probability: 1

dubbo:
  ...
  # sleuth,traceFilter为org.apache.dubbo.rpc.Filter文件中的key
  consumer:
    filter: traceFilter
  provider:
    filter: traceFilter

4、访问下单接口:

订单服务日志:

2021-10-25 23:58:46.329  INFO [spring-cloud-cfl-order,,,] 1927 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler            : Branch commit result: PhaseTwo_Committed
2021-10-25 23:59:01.968  INFO [spring-cloud-cfl-order,185651e8b2fc9bc7,185651e8b2fc9bc7,true] 1927 --- [nio-8082-exec-1] c.cfl.order.controller.OrderController   : OrderController -> save userId:1 productId:1 count:1
2021-10-25 23:59:02.223  INFO [spring-cloud-cfl-order,185651e8b2fc9bc7,185651e8b2fc9bc7,true] 1927 --- [nio-8082-exec-1] i.seata.tm.api.DefaultGlobalTransaction  : Begin new global transaction [192.168.1.101:8091:2025744393]
2021-10-25 23:59:02.226  INFO [spring-cloud-cfl-order,185651e8b2fc9bc7,185651e8b2fc9bc7,true] 1927 --- [nio-8082-exec-1] c.c.order.service.impl.OrderServiceImpl  : OrderServiceImpl -> insert 接收到1号商品的下单请求
2021-10-25 23:59:02.879  INFO [spring-cloud-cfl-order,185651e8b2fc9bc7,185651e8b2fc9bc7,true] 1927 --- [nio-8082-exec-1] c.c.order.service.impl.OrderServiceImpl  : OrderServiceImpl -> insert 接收到1号商品的下单请求,接下来调用 #库存服务#,扣减库存
2021-10-25 23:59:04.079  INFO [spring-cloud-cfl-order,185651e8b2fc9bc7,185651e8b2fc9bc7,true] 1927 --- [nio-8082-exec-1] c.c.order.service.impl.OrderServiceImpl  : OrderServiceImpl -> insert 接收到1号商品的下单请求,接下来调用 #账户服务#,扣减金额
2021-10-25 23:59:05.867  INFO [spring-cloud-cfl-order,185651e8b2fc9bc7,185651e8b2fc9bc7,true] 1927 --- [nio-8082-exec-1] i.seata.tm.api.DefaultGlobalTransaction  : [192.168.1.101:8091:2025744393] commit status: Committed
2021-10-25 23:59:06.231  INFO [spring-cloud-cfl-order,,,] 1927 --- [atch_RMROLE_1_8] i.s.core.rpc.netty.RmMessageListener     : onMessage:xid=192.168.1.101:8091:2025744393,

库存服务日志:

2021-10-25 23:58:36.514  INFO [spring-cloud-cfl-storage,,,] 1703 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler            : Branch commit result: PhaseTwo_Committed
2021-10-25 23:58:43.481  INFO [spring-cloud-cfl-storage,732cf4d5b9346a47,ba167a7960fa045a,true] 1703 --- [20881-thread-17] c.c.s.service.impl.StorageServiceImpl    : StorageServiceImpl -> reduceStorage productId:1 number:1
2021-10-25 23:58:47.175  INFO [spring-cloud-cfl-storage,,,] 1703 --- [atch_RMROLE_1_8] i.s.core.rpc.netty.RmMessageListener     : onMessage:xid=192.168.1.101:8091:2025744372,branchId=2025744380,branchType=AT,resourceId=jdbc:mysql://localhost:3306/seata_storage,applicationData=null
2021-10-25 23:58:47.191  INFO [spring-cloud-cfl-storage,,,] 1703 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler            : Branch committing: 192.168.1.101:8091:2025744372 2025744380 jdbc:mysql://localhost:3306/seata_storage null
2021-10-25 23:58:47.192  INFO [spring-cloud-cfl-storage,,,] 1703 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler            : Branch commit result: PhaseTwo_Committed
2021-10-25 23:58:47.447  INFO [spring-cloud-cfl-storage,,,] 1703 --- [atch_RMROLE_1_8] i.s.core.rpc.netty.RmMessageListener     : onMessage:xid=192.168.1.101:8091:2025744372,branchId=2025744383,branchType=AT,resourceId=jdbc:mysql://localhost:3306/seata_storage,applicationData=null
2021-10-25 23:58:47.447  INFO [spring-cloud-cfl-storage,,,] 1703 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler            : Branch committing: 192.168.1.101:8091:2025744372 2025744383 jdbc:mysql://localhost:3306/seata_storage null
2021-10-25 23:58:47.447  INFO [spring-cloud-cfl-storage,,,] 1703 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler            : Branch commit result: PhaseTwo_Committed
2021-10-25 23:59:02.953  INFO [spring-cloud-cfl-storage,185651e8b2fc9bc7,76d3d6c687bbacaa,true] 1703 --- [20881-thread-18] c.c.s.service.impl.StorageServiceImpl    : StorageServiceImpl -> reduceStorage productId:1 number:1
2021-10-25 23:59:06.418  INFO [spring-cloud-cfl-storage,,,] 1703 --- [atch_RMROLE_1_8] i.s.core.rpc.netty.RmMessageListener     : onMessage:xid=192.168.1.101:8091:2025744393,branchId=2025744400,branchType=AT,resourceId=jdbc:mysql://localhost:3306/seata_storage,applicationData=null

 账户服务日志:

2021-10-25 23:58:47.775  INFO [spring-cloud-cfl-account,,,] 1618 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler            : Branch commit result: PhaseTwo_Committed
2021-10-25 23:59:04.161  INFO [spring-cloud-cfl-account,185651e8b2fc9bc7,d7649b9531007d8f,true] 1618 --- [20880-thread-16] c.c.a.service.impl.AccountServiceImpl    : AccountServiceImpl -> reduceBalance userId:1 number:100
2021-10-25 23:59:06.591  INFO [spring-cloud-cfl-account,,,] 1618 --- [atch_RMROLE_1_8] i.s.core.rpc.netty.RmMessageListener     : onMessage:xid=192.168.1.101:8091:2025744393,branchId=2025744405,branchType=AT,resourceId=jdbc:mysql://localhost:3306/seata_account,applicationData=null
  • 三个服务的traceId都是185651e8b2fc9bc7
  • 订单服务的spanId为185651e8b2fc9bc7,库存服务的spanId为ba167a7960fa045a,账户服务的spanId为d7649b9531007d8f,三个服务的spanId各不相同。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值