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

概念

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

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

原理

调用过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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可以帮助我们追踪请求路径和性能,同时还支持告警和自定义指标。

猜你喜欢

转载自blog.csdn.net/weixin_52156647/article/details/129713346
今日推荐