21 | Sleuth 体系架构:为什么微服务架构需要链路追踪?
姚秋辰
你好,我是姚秋辰。
俗话说,人非圣贤孰能无过,你有过来我有过,微服务它也有过。所谓“过”,便是这线上环境所发生的 Bug。
面对线上 Bug 怎么办?有则改之,无则加勉而已。Sentinel 用自己的文治武功替我们搞定了后半句“无则加勉”。那么这前半句“有则改之”,我们该如何下手去改呢?
请你想一下,在开发小哥改正线上 Bug 之前,咱们是不是需要先找到 Bug 发生的原因呢?所以今天我们就来聊一聊“如何找 Bug”这个话题,且看我是如何使用 Sleuth 提供的“调用链追踪”技术,按图索骥查明 Bug 真相的。
首先我来带你了解一下调用链追踪要解决的问题。
调用链追踪解决了什么问题
我们可以想象这样一个场景,你负责的是一个庞大的电商微服务架构系统,每个服务之间都有复杂的上下游调用关系,而且并发量还不小,每秒上万 QPS 不在话下。
在这个微服务系统中,用户通过浏览器的 H5 页面访问系统,这个用户请求会先抵达微服务网关组件,然后网关再把请求分发给各个微服务。所以你会发现,用户请求从发起到结束要经历很多个微服务的处理,这里面还涉及到消息组件的集成。
我画了一幅图来展示这个复杂的关系。
现在问题来了,突然有一天,有用户上报,说他在页面端看到了一个报错,每次点击下单都会报一个 500 错误。如果问题被交到了你手上,你该怎么排查呢?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了微服务架构中的链路追踪技术的重要性以及Sleuth组件的实现原理。在庞大的微服务系统中,调用链追踪技术通过将一次服务请求中所有访问到的微服务日志前后串联起来,帮助开发人员快速定位异常。Sleuth通过Trace ID、Span ID和Parent Span ID的打标方式实现了日志信息的前后关联,支持四种事件记录,帮助开发人员更好地理解服务调用过程中的各个阶段。此外,文章还提到了Sleuth在调用链追踪场景下的功能,以及构建完整的线上异常排查流程所需的辅助组件。读者通过本文可以快速了解微服务架构中链路追踪的重要性以及Sleuth组件的实现原理。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring Cloud 微服务项目实战》,新⼈⾸单¥59
《Spring Cloud 微服务项目实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- kimoti我猜是加在http请求头传递下去的
作者回复: binggo,没错,对于http请求的组件来说,是通过header传递的。有的组件不基于http构建的,传递方式就五花八门了
2022-01-3116 - 杨极客既然已经有了traceid,不可以通过创建时间来区分项目顺序吗
作者回复: 每个系统的系统时钟可能会发生不一致,且时区可能也有区别,所以从调用链上记录前后顺序更为稳妥
2022-07-12归属地:上海9 - 电光火石如果采样率小于1,zipkin肯定会受影响,日志里面会有traceid和spanid吗?还是采样的才会有,没有采样的就不会有?
作者回复: 同学可以看console里的日志内容,你可以同时把trace id和sampled两个信息作为参数打印出来,所以即使没被采样,但trace id还是会有的
2022-09-03归属地:上海2 - 蝴蝶我想去一个问题,如果采样率不是1,那么异常发生的时候,是不是有可能不会记录链路呢?
作者回复: 是的,<1会导致某些日志不会被tracing系统采样(zipkin),但是日志仍然可以在检索系统(本地采用的日志查询系统)中根据tracing id查到。一般线上采样率我们都配置1
2022-02-0221 - 金尚老师传统单体应用可以用sleuth吗
作者回复: 那必须可以,用spring boot其实就能接入sleuth,咱spring cloud的这些组件其实都是基于springboot做基石
2022-03-08 - 金尚老师不是微服务架构可以用sleuth吗。
作者回复: 那必须可以,放心集成就好了,sleuth也有spring boot依赖可以使用
2022-03-08 - 兴趣使然为什么不用skywalking2023-02-07归属地:湖北
收起评论