关于面试题,“什么是链路追踪”?
我们应该怎么回答呢?
大家好,我是Mic,一个工作了14年的Java程序员
这个问题,面试官想考察什么呢?
需要高手面试文档面试文档的小伙伴可以扫描文章底部二维码
链路追踪是分布式架构下的一种监控方式。
对于一些规模较大的分布式系统,一个用户的请求,可能需要涉及到多个子系统的流转。
而且随着业务的不断增长,服务之间的调用关系也会越来越复杂。
在这样一个背景下,我们一方面需要去了解整个请求链路的调用关系,去定位到性能问题。
另一方面还需要从整体到局部展示各项系统指标,快速实现故障定位和回复。
所以产生了链路追踪的需求。
最早的链路监控系统是Google的Dapper,在2010年的时候Google发布了一篇论文介绍Dapper的整体设计。
目前市面上所有的链路监控系统都是在它的理论模型下衍生出来的。
包括阿里的鹰眼、大众点评的cat、Twitter的Zipkin等等
有了全链路监控工具,解决以下几个方面的问题:
请求链路追踪,故障快速定位:可以通过调用链结合业务日志快速定位错误信息。
可视化: 各个阶段耗时,进行性能分析。
依赖优化:各个调用环节的可用性、梳理服务依赖关系以及优化。
数据分析,优化链路:可以得到用户的行为路径,汇总分析应用在很多业务场景。
考察这个问题的公司,一般都是有一定规模的中大型互联网企业。
因为一些小型企业本身的技术架构并不复杂,因此没必要去做链路追踪这方面的设计,有点浪费资源。
而且这个问题考察的点一般不会太深入,除非是面对比较资深的求职者,可能还会继续了解链路追踪的实现原理。
建议求职者根据自身情况简单明了把这个问题表述清楚即可。
下面我们来看看在面试过程中,高手应该怎么回答
链路追踪是一种针对分布式架构下实现请求链路可视化监控的一种技术。
它的核心目的就是去了解分布式系统中的请求调用行为,从而从整体到局部详细展示各项系统指标。
实现故障的快速定位,缩短故障排除的时间。
常用的链路追踪工具有Zipkin、Skywalking、Cat、Pinpoint。
不过,链路追踪只是分布式链路监控工具里面的核心之一,除此之外,还包括可视化、服务依赖关系的梳理、数据分析等能力。
如果你喜欢我的作品,记得点赞收藏加关注!!!
另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!