26 | 稳定性实践:全链路跟踪系统,技术运营能力的体现
赵成
该思维导图由 AI 生成,仅供参考
今天我们来分享全链路跟踪系统建设方面的内容。我们知道,随着微服务和分布式架构的引入,各类应用和基础组件形成了网状的分布式调用关系,这种复杂的调用关系就大大增加了问题定位、瓶颈分析、容量评估以及限流降级等稳定性保障工作的难度,如我们常见的调用网状关系。
正是这样的背景,催生了分布式链路跟踪,也叫全链路跟踪的解决方案。
关于这一块的技术解决方案,在 Google 的 Dapper 论文发表之后,近些年业界已经有非常多且非常成熟的实践经验和开源产品。
比如阿里的鹰眼系统,就是全链路跟踪系统在国内的最佳实践;再比如美团点评的 CAT 分布式监控系统,也是从产品实践中逐步开源出来,在业界已经得到了非常广泛的应用;还有一些独立的开源产品,比如国内分布式监控技术专家吴晟创建的 Skywalking 项目,也是非常优秀的产品,而且也有比较广泛的应用。
除此之外,还有大量优秀的商业产品,这类产品通常叫 APM,应用性能管理系统,比如国内的听云、博瑞、OneAPM 等等,他们在产品化方面做的会更完善,在很多场景下可以非常方便地落地应用。
介绍上述这些产品,主要还是想说明,当前在分布式或全链路跟踪监控这个领域,无论是在技术还是产品层面都已经相对成熟,我们完全可以通过对这些产品的调研来选择适合自己的解决方案。
蘑菇街在这块也是自研了一套体系,但是技术方案和思路上跟上述这些开源或商业产品都很相似,所以技术层面我就不再做详细赘述。
如果想深入了解相关内容,一方面可以在网上找到非常多的资料,甚至是去阅读源码;另一方面还是推荐极客时间上陈皓老师的《左耳听风》专栏和杨波老师的《微服务架构核心 20 讲》,两位都是骨灰级的微服务和分布式架构专家,他们在技术层面的分享会更有深度和针对性。
全链路跟踪系统在技术运营层面的应用
接下来,主要分享我们利用全链路跟踪系统在技术运营层面做的一些事情,这里提到的运营,就是应用在线上运行时,我们根据应用运行数据所做的运行维护工作,这里我们会更加强调数据的作用。
同时,这里的一个核心技术点就是 TraceID,当请求从接入层进来时,这个 TraceID 就要被创建出来;或者是通过 Nginx 插件方式创建放到 http 的 header 里面;或者是通过 RPC 服务化框架生成。然后在后续的请求中,这个字段会通过框架自动传递到下一个调用方,而不需要业务考虑如何处理这个核心字段。
有了这个 TraceID,我们就可以将一个完整的请求链路给串联起来了,这也是后面场景化应用的基础。下面我们就一起来看会有哪些具体的技术运营场景。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
全链路跟踪系统在技术运营层面的应用是本文的主要内容。随着微服务和分布式架构的普及,复杂的调用关系增加了问题定位、瓶颈分析、容量评估等稳定性保障工作的难度。全链路跟踪系统通过TraceID串联请求链路,解决了这些问题。文章介绍了全链路跟踪系统的技术解决方案和在技术运营层面的应用场景。 在技术运营层面,全链路跟踪系统可以用于问题定位和排查。通过详细的调用关系呈现,可以快速准确地定位瓶颈分析和异常错误。文章给出了两个案例,分别是页面变慢和请求耗时长的问题,通过调用链分析找到了问题所在,并提出了解决方案。全链路跟踪系统的应用使得复杂调用关系下的问题定位变得简单,为技术运营提供了有力支持。 文章还介绍了全链路跟踪系统的发展现状和相关产品,包括阿里的鹰眼系统、美团点评的CAT分布式监控系统、以及一些独立的开源产品和商业产品。这些产品在分布式或全链路跟踪监控领域已经相对成熟,为读者选择适合自己的解决方案提供了参考。 总的来说,全链路跟踪系统在技术运营层面有着广泛的应用,可以帮助解决复杂调用关系下的问题定位和排查,为技术运营提供了强大的支持。同时,读者还可以通过了解相关产品来选择适合自己的解决方案。 文章还介绍了全链路跟踪系统在服务运行状态分析和业务全息方面的应用,展示了其在技术和业务层面的价值。全链路跟踪系统不仅可以帮助技术人员解决问题,还能与业务信息关联,提升业务问题的解决效率。这表明技术、产品和运营相辅相成,共同促进彼此的完善和成熟。文章内容丰富,为读者提供了全链路跟踪系统的全面认识和应用价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《赵成的运维体系管理课》,新⼈⾸单¥59
《赵成的运维体系管理课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 天草二十六透传是让框架去做,不要在程序里硬编码。 如果是有h5或者客户端的请求,让在http头部传入traceId,否则自己生成traceId. 对于spring cloud体系,极力推荐sleuth,可以帮你做到,免去代码的硬耦合。
作者回复: 是的,要做到无侵入。
2019-09-073 - 松花皮蛋me老师如果有多级cdn缓存节点链路跟踪怎么做?
作者回复: 如果是http请求的,我的理解可以在消息头上增加唯一标示,要求cdn平台在传递请求时,透传头信息
2018-03-122 - 芝士老爹老师,想请教下:Java应用,使用线程池+异步的方式,怎么传递TraceID? 我们现在使用的框架不支持,想改造的话,思路在哪儿?2018-11-22
- 仔仔但是在很多公司里面,其实开发并不愿意取修改代码支持traceid的传递,真对这种情况,如何从运维层面取实现对应的分布式调用跟踪?2018-10-22
收起评论