【分布式系统中调用链监控实现原理】

文章介绍了调用链监控的概念,包括客户端和服务端的调用过程,以及如何通过记录span_id等信息来分析调用异常和性能瓶颈。文中提到了Zipkin和Skywalking这两个开源的分布式追踪系统,用于帮助监控和优化分布式环境中的请求路径和性能。
摘要由CSDN通过智能技术生成

概念

调用链监控是指在分布式系统中,记录和展示请求在多个微服务组件之间的调用过程和耗时情况的技术。

通过调用链监控,我们可以追踪请求在整个系统中的路径,并且识别出潜在的性能问题。

原理

调用过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xgw5MeOp-1679474154333)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230322160134168.png)]

上图信息:

  • client send

    • 客户端发送: 内容中心向用户中心发送请求的瞬间
  • server receive

    • 服务端接收请求 : 用户中心接收到请求的瞬间
  • server send

    • 服务端发送响应 : 用户中心响应请求的瞬间
  • client receive

    • 客户端接收响应:内容中心接收请求的瞬间

用一张表来记录调用过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wkaoBOTf-1679474154341)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230322160722808.png)]

字段描述

  • span_id :唯一标识

  • pspan_id : parent span_id 即关联的上一级记录ID (典型的自关系型数据库)

  • service_name :服务名称

  • api : 调用的api名称

  • stage :

    • cs :client send
    • sr : service recive
    • ss : service send
    • cr : client recive
  • timestamp :时间戳

实现:

在client send 瞬间向数据库记录 id为1的记录

service recive 瞬间记录 id为2的记录

service send 瞬间记录 id为3的记录

client recive 瞬间记录 id为4的记录

分析调用异常:

有4条数据:

调用正常

只有3条数据:

用户中心返回了 但是 内容中心没有接收到响应,可能是网络异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6g1Ker5c-1679474154341)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230322161704965.png)]

只有2条数据:

说明 users/1没有成功返回,api报异常了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PbWSuB2B-1679474154342)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230322161926613.png)]

只有一条数据

说明请求发出去用户中心没有收到,可能请求瞬间网络有问题

分析性能瓶颈

t2 - t1 : 调用的网络耗时

t3 - t2 : users/1 api的耗时

t4 - t3 : 响应的网络耗时

t4 - t1 : 总耗时

掌握了原理我们使用不同的监控工具都会很容易上手!

常用的调用链监控工具:

Zipkin:

开源的分布式追踪系统,它可以帮助我们监控跨越多个微服务的请求路径和性能。Zipkin提供了强大的UI和API,可以方便地查询和可视化调用链信息。

Skywalking:

开源的分布式追踪系统,它支持多种语言和框架,并且提供了灵活的插件机制。Skywalking可以帮助我们追踪请求路径和性能,同时还支持告警和自定义指标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mikasa_akm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值