系统需要联网吗_链路追踪系列一:互联网大厂为什么都需要链路追踪系统

当今的互联网服务,通常都是用大规模的分布式集群来实现的,服务可能来自不同的研发团队、使用不同的编程语言来实现、运行在上千台甚至上万台服务器上。随着业务发展,公司的分布式系统,尤其微服务大行其道后,各个服务之间的调用链路变得越来越复杂。

本文结合一个真实案例——贝壳找房(前身链家网)链路追踪系统来分析和说明。

一、大厂工作都有什么痛点二、调研与开发LTrace--全链路跟踪平台三、全链路跟踪关键的核心是什么四、调用链路上哪些是有价值的五、全链路跟踪能带来哪些额外好处六、LTrace最重要的三个设计目标七、团队如何分工开发

一、大厂工作都有什么痛点

公司系统大规模的分布式集群化、微服务化后,用户的一次请求通常由多个系统协同完成处理,而且这些处理是发生在不同机器甚至是不同集群上的,当请求处理发生异常时,定位问题往往变得非常困难。

f0a5a76a34076f15fdcc0ac54efe63c5.png

工作中经常会遇到以下情况:

  a. 上下游联调接口报错  b. QA测试、回归功能等发现某个地方存在异常  c. 某天线上一次接口调用错误(历史数据)  d. 新功能上线出现异常  e. 收到线上情况邮件报警 或当 RD一时无法立即查询错误日志等等

为了定位问题,有时我们需要拉上上下游服务的相关RD一起排查,非常耗时耗力。因此,如何快速发现问题,并准确定位到是哪个环节出了问题,这是非常重要的。

二、调研与开发LTrace

为了解决上面这些痛点,我们经过调研与测试,结合业界的实践经验,开发了LTrace--链家全链路跟踪平台,有效应对上面的问题,大幅度提升工作效率。

目前已经在公司多部门的各条业务线项目中得到成功应用。基于请求链路采集到的全量丰富数据,我们能够直观的了解到项目间的链路关系,就能够进行问题的快速定位与瓶颈节点的快速排查,代码性能问题一览无余。

三、全链路跟踪关键的核心是什么

链路跟踪,关键的核心是调用链,就是对一次请求进行跟踪。通过为每个请求生成一个全局唯一的ID,将分布在各个服务节点上的同一次请求串联起来,还原出更多有价值的数据。在我们设计实现LTrace平台过程中,遇到几项大的挑战。

1、稳定性挑战。我们的业务系统对于稳定性、性能、资源要求极其严格,不能有太复杂的逻辑和外部依赖,并对业务系统性能几乎无影响,LTrace平台的稳定性不应该对业务系统的稳定性造成任何影响;

2、高性能挑战。目前公司存在众多复杂的分布式业务系统,数十亿hits 生成的链路数据需要及时采集存储,这就要求LTrace平台具备快速的数据处理能力;

3、透明、易扩展、避免侵入业务。易于被使用方广泛接受、低耦合是很重要的,透明性用来隐藏实现策略,避免让使用者卷进细节,同时具备良好的可扩展性;

4、跨语言、多协议。在公司各部门中,存在JAVA、PHP等众多异构系统以及各种服务中间件,因此LTrace平台要实现全链路跟踪,必须要支持跨语言、多协议。

四、调用链路上哪些是有价值的

我们通过对一次请求进行还原,形成一个完整的调用链路图,如下图。界面中展示请求依次通过的各个服务节点的情况。比如请求经过每个服务节点的IP、发送与响应时间点、处理结果与处理时长,网络传输时长、异常描述等信息。

2c8e099689414b3d9974fba1e07f1da9.png

五、全链路跟踪能带来哪些额外好处

  1. 快速的定位到问题

下面是LTrace的一个界面,我们现在可以在界面中快速的定位到问题出现的服务节点、机器IP与问题原因。以前我们遇到线上问题时,通常需要同时登录N台机器抓日志排查,有时还可能需要关联上下游项目一起排查。

abe54c7bbec87297d3ff76ecec361d90.png
  1. 瓶颈节点

我们还能够快速定位瓶颈节点。如界面中红框部分显示的是链路调用的瓶颈节点,由于该节点的耗时,导致了整个链路调用的耗时延长,因此针对该节点进行优化,进而达到优化整个链路的效率。

16caa93adb2caee562fa84c7e7792fc4.png
  1. 代码优化

我们还能够检测到代码中一些需要优化的地方。比如图中红框部分都是同一个接口的调用,甚至连请求参数都是一样的。这种调用如果优化成批量请求或者相同参数只请求一次,能够快速提升节点的服务质量。

9781f50833853e0575f65584815f356e.png

同一个接口的调用

六、LTrace最重要的三个设计目标

对系统行为进行链路跟踪必须是持续进行的,因为异常、超时等的发生是无法预料的,异常超时可能发生在链路的任何一个节点上或者一次调用的网络中,而且可能是难以重现的。同时跟踪需要是无所不在,遍布各处的,否则可能会遗漏某些重要的点。

基于此LTrace设计了三个最重要的设计目标:极低的额外开销,对应用的透明性,可扩展。同时产生的跟踪数据需要可以被快速分析,这样可以帮助我们实时获取各节点状态。

七、项目团队如何分工开发

如下图,我们对LTrace分为了9个部分:1.数据存储 2.数据展示 3.数据采样 4.数据埋点 5.数据收集 6.API接口实现 7.C端接入约定 8.技术与使用文档整理 9.功能与性能测试。 这9个板块分别有对应的跟进人,互相协调配合。

458d0ad8d9dccacaccdb6dbb000a9a9c.png

项目分工


系列其他,敬请期待。

感谢您的阅读,如果让你有所收获,欢迎点赞和转发
本头条号专注于互联网领域的技术交流与经验分享,喜欢的加一下关注哦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值