链式日志-dubbo2.7.6 + zipkin

1【架构图】

在这里插入图片描述

    Collector 收集器、Storage 存储、API、UI 用户界面等几部分构成了 Zipkin Server 部分,对应于 GitHub 上 openzipkin/zipkin 这个项目。而收集应用中调用的耗时信息并将其上报的组件与应用共生,并拥有各个语言的实现版本,其中 Java 的实现是 GitHub 上 openzipkin/brave。除了 Java 客户端实现之外,openzipkin 还提供了许多其他语言的实现,其中包括了 go、php、JavaScript、.net、ruby 等,具体列表可以参阅 Zipkin 的 Exiting instrumentations。Zipkin 的工作过程
    当用户发起一次调用时,Zipkin 的客户端会在入口处为整条调用链路生成一个全局唯一的 trace id,并为这条链路中的每一次分布式调用生成一个 span id。span 与 span 之间可以有父子嵌套关系,代表分布式调用中的上下游关系。span 和 span 之间可以是兄弟关系,代表当前调用下的两次子调用。一个 trace 由一组 span 组成,可以看成是由 trace 为根节点,span 为若干个子节点的一棵树。

在这里插入图片描述

Span 由调用边界来分隔,在 Zipkin 中,调用边界由以下四个 annotation 来表示:
*
cs - Clent Sent 客户端发送了请求
*
sr - Server Receive 服务端接受到请求
*
ss - Server Send 服务端处理完毕,向客户端发送回应
*
cr - Client Receive 客户端收到结果

显然,通过这四个 annotation 上的时间戳,可以轻易的知道一次完整的调用在不同阶段的耗时,比如:
*
sr - cs 代表了请求在网络上的耗时
*
ss - sr 代表了服务端处理请求的耗时
*
cr - ss 代表了回应在网络上的耗时
*
cr - cs 代表了一次调用的整体耗时

Zipkin 会将 trace 相关的信息在调用链路上传递,并在每个调用边界结束时异步的把当前调用的耗时信息上报给 Zipkin Server。Zipkin Server 在收到 trace 信息后,将其存储起来,Zipkin 支持的存储类型有 inMemory、MySql、Cassandra、以及 ElasticsSearch 几种方式。随后 Zipkin 的 Web UI 会通过 API 访问的方式从存储中将 trace 信息提取出来分析并展示,如下图所示:

2 在 Dubbo 中使用

安装 Zipkin Server

按照 Zipkin 官方文档中的快速开始 来安装 Zipkin,如下所示:

$ curl -sSL https://zipkin.io/quickstart.sh | bash -s
$ java -jar zipkin.jar
下面也有通过mysql来纪录信息的启动命令!
ZIPKIN + MYSQL 启动命令:
STORAGE_TYPE=mysql MYSQL_DB=unicom MYSQL_USER=root MYSQL_PASS=YC_mysql@2020 MYSQL_HOST=192.168.1.56 MYSQL_TCP_PORT=3306 nohup java -jar zipkin-server-2.21.7-exec.jar

在这里插入图片描述

MYSQL脚本:
https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql
在这里插入图片描述

1.pom jar包

io.zipkin.brave brave-instrumentation-dubbo-rpc 5.6.8 dubbo com.alibaba org.springframework.cloud spring-cloud-starter-zipkin 2.0.0.RELEASE

2.application.properties

zipkin-dubbo

dubbo.provider.filter=tracing
dubbo.consumer.filter=tracing

zipkin config

spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=20MB
#开启上报到zipkin服务,如果不开启的话,tracing信息还是会在不同服务中传递,只是不会上报到zipkin服务端
spring.zipkin.enabled=true
#通过http协议上报tracing信息
spring.zipkin.base-url=http://192.168.1.69:9411
#spring.zipkin.messageTimeout=5
#向http发送trace信息,使用默认 http 方式收集 span 需要配置此项
spring.zipkin.sender.type=web
#采样率,默认是0.1,如果是1的话,代表百分之百采样
spring.sleuth.sampler.percentage=1

正常调用dubbo服务后,可以登录zipkin控制台进行浏览服务调用情况。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值