我在M2公司做架构之链路追踪

一、什么是链路追踪?

分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

二、链路追踪的主要功能包含哪些?

  • 故障快速定位:可以通过调用链结合业务日志快速定位错误信息。
  • 链路性能可视化:各个阶段链路耗时、服务依赖关系可以通过可视化界面展现出来。
  • 链路分析:通过分析链路耗时、服务依赖关系可以得到用户的行为路径,汇总分析应用在很多业务场景。

三、链路追踪的目的是什么?

链路追踪的主要目的在于让我们知道A微服务调用B微服务,B微服务调用C微服务,C微服务调用D微服务,D微服务调用A微服务等整个流程是怎样的(我在SpringCloud之分布式链路追踪提到过)。

不过我还是要完善一下,链路追踪的目的在于让分布式请求所涉及到的各个微服务之间的调用流程可视化,有助于我们提高问题排查的效率或更快的找到性能的瓶颈。

四、链路追踪现有的解决方案有哪些?

关于解决方案的比较,这里不再赘述,感兴趣朋友可以阅读这篇文章(非常全面):
分布式服务调用链路追踪——方案选型

五、结合我所使用的方案,谈谈我在实践中遇到的一些问题

我所使用的是SpringCloud Sleuth+Zipkin的解决方案,两者如何整合,可阅读这篇文章SpringCloud之分布式链路追踪
实际中遇到最大问题就是关于SpringCloud与其对应的版本适配问题,版本如果不适配,可视化的调用流程根本就出不来。还有就是zipkin不能挂掉,一旦挂掉微服务本身也会受影响的。这就需要运维层面做好监控机制,防止因zipkin宕机导致一系列微服务受影响而产生的不利连锁反应(可造成整个系统的不可用)。

文章目录
  1. 一、什么是链路追踪?
  2. 二、链路追踪的主要功能包含哪些?
  3. 三、链路追踪的目的是什么?
  4. 四、链路追踪现有的解决方案有哪些?
  5. 五、结合我所使用的方案,谈谈我在实践中遇到的一些问题