分布式系统下调用链追踪技术面试题

 更新时间:2022年03月09日 14:25:03   作者:Q.E.D  
这篇文章主要为大家介绍了分布式系统下调用链追踪技术面试问题合集,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

引言

一个复杂的分布式系统,用户发起一个请求,这个请求可能调用几十到几百个服务,经过很多业务层,而每个业务又是多个机器集群,一个请求具体被随机到哪台机器上又无法确定,如果最后用户的请求失败,只返回一个错误提示,作为开发人员,该如何定位解决问题?你需要定位以下问题:

  • 问题出在哪个服务,是你负责的服务还是调用别人服务的某一个环节。
  • 同一个服务集群有多台机器,到底要去哪个机房哪台机器定位某条报错信息。
  • 同一个接口可能有多次请求,到底是哪一次报错了。
  • 多个服务之间调用顺序是怎样的。
  • 如果需要响应速度优化,到底是哪个环节哪个服务耗时了,如何定位。

1、面试官:

分布式微服务环境下那么多机器,调用链又很长,你们是如何定位问题的?

问题分析这个问题,如果你使用过微服务框架,对于服务治理你一定知道这种技术,如果作为微服务架构的小白,你只是知道一些基础知识,突然被问到这个问题,确实比较懵逼。这么多机器集群,我怎么知道每次服务打到哪个机器上了,我怎么知道到底是哪个环节抛异常了?

我:分布式系统中针对上述问题,我们急需一套链路追踪(Trace)系统来解决这些痛点,这个系统主要的任务就是收集各服务的日志,上报日志,分析日志,保存展示。其关键核心在于调用链,为每个请求生成全局唯一的ID(Traceld),通过Traceld 将不同系统的“孤立地”调用信息关联在一起,还原出更多有价值的数据。

(如果你还不明白到底怎么搞直接看看成品图)

图片描述

通过一个Trace查询某一次请求,这个Trace是全剧唯一,通过这个链路追踪系统,你可以清楚的知道服务调用深度,涉及服务个数,每个服务调用的时间及状态,到底是哪个服务出现异常,具体到方法名,查找耗时长的链路时,可以通过在查询结果页面点击“耗时”二字,让数据以耗时升序或降序排列,都一目了然,上面的问题都得到解决了。

2、面试官:

你知道哪些成熟的调用链开源工具? 

Google Dapper

Dapper一开始是一个自包含的跟踪工具,但后来发展成为一个监控平台,具有高性能,代码侵入性低,支持集群扩展特性。

dapper 处理日志分为3个阶段:

  • 各个服务将span数据写到本机日志上;
  • dapper守护进程进行拉取日志文件,将文件读到dapper收集器里;
  • dapper收集器将结果写到bigtable中,一次跟踪被记录为一行。

阿里巴巴的分布式调用跟踪系统 - 鹰眼(EagleEye)

EagleEye 是一个以调用链追踪技术为核心的监控系统,通过收集,存储,分析分布式系统中的调用事件参数,协同开发人员进行故障定位,容量预估,性能瓶颈定位,系统请求链路梳理等,EagleEye 的开发也是基于Google Dapper 的设计思想。

图片描述

图片描述

图片来源:github EagleEye 社区

美团分布式会话追踪系统 - MTrace

MTrace是美团点评内部的分布式会话跟踪系统,也借鉴了2010年Google的 dapper,通过一个全局的ID将分布在各个服务节点上的同一次请求串联起来,还原原有的调用关系、追踪系统问题、分析调用数据、统计系统指标,MTrace支持美团内部RPC中间件,HTTP中间件,MySQL,Tair,MQ等中间件的数据埋点。

总结

无论哪个公司使用哪个框架,我们发现 trace 系统最终要解决的问题都是相同的,大致归纳如下:

  • 复杂网络环境中定位问题,通过异常log绑定记录,轻松定位。
  • 发现热点,发现瓶颈问题。
  • 预估系统容量,按照上下游调用比例,粗略计算哪些机器需要提前扩容。
  • 优化链路,通过链路分析,从更高的全局角度分析可以优化的点。

以上就是分布式系统下调用链追踪技术面试题的详细内容,更多关于分布式系统下调用链追踪的资料请关注脚本之家其它相关文章!

相关文章

  • Idea启动多个SpringBoot项目的3种最新方案

    Idea启动多个SpringBoot项目的3种最新方案

    SpringBoot自带Tomcat,直接运行main方法里面的SpringApplication.run即可,并且访问时不需要带项目名,这篇文章主要介绍了Idea启动多个SpringBoot项目的3种方案,需要的朋友可以参考下
    2023-02-02
  • IDEA部署Tomcat的超详细图文教程

    IDEA部署Tomcat的超详细图文教程

    最近迫于无奈从我哪破旧的Eclipse转换到了IDEA,然后就是超多的不习惯,下面这篇文章主要给大家介绍了关于IDEA部署Tomcat的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • springboot+gradle 构建多模块项目的步骤

    springboot+gradle 构建多模块项目的步骤

    这篇文章主要介绍了springboot+gradle 构建多模块项目的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 一个处理用户登陆的servlet简单实例

    一个处理用户登陆的servlet简单实例

    这篇文章主要介绍了一个处理用户登陆的servlet简单实例,可通过servlet实现处理用户登录的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • SpringBoot 使用 Sa-Token 完成注解鉴权功能(权限校验)

    SpringBoot 使用 Sa-Token 完成注解鉴权功能(权限校验)

    Sa-Token 是一个轻量级 java 权限认证框架,主要解决登录认证、权限认证、单点登录、OAuth2、微服务网关鉴权 等一系列权限相关问题,这篇文章主要介绍了SpringBoot使用Sa-Token完成注解鉴权功能,需要的朋友可以参考下
    2023-05-05
  • SpringBoot雪花算法主键ID传到前端后精度丢失问题的解决

    SpringBoot雪花算法主键ID传到前端后精度丢失问题的解决

    本文主要介绍了SpringBoot雪花算法主键ID传到前端后精度丢失问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java内存模型知识汇总

    Java内存模型知识汇总

    本文中,有很多定义和说法,都是笔者自己理解后定义出来的。希望能够让读者可以对Java内存模型有更加清晰的认识。当然,如有偏颇,欢迎指正。
    2018-09-09
  • Java 实战范例之线上新闻平台系统的实现

    Java 实战范例之线上新闻平台系统的实现

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+jsp+jdbc+mysql实现一个线上新闻平台系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java精品项目瑞吉外卖之新增菜品与分页查询篇

    Java精品项目瑞吉外卖之新增菜品与分页查询篇

    这篇文章主要为大家详细介绍了java精品项目-瑞吉外卖订餐系统,此项目过大,分为多章独立讲解,本篇内容为新增菜品和分页查询功能的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • java的Map集合中按value值进行排序输出的实例代码

    java的Map集合中按value值进行排序输出的实例代码

    下面小编就为大家带来一篇java的Map集合中按value值进行排序输出的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08

最新评论