从 0 开始学微服务
胡忠想
微博技术专家
64643 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
开篇词 (1讲)
结束语 (1讲)
从 0 开始学微服务
15
15
1.0x
00:00/00:00
登录|注册

08 | 如何追踪微服务调用?

Hive
Spark
MapReduce
OLTP数据仓库
Spark Streaming
Storm
调用拓扑图
调用链路图
离线数据处理
实时数据处理
CR阶段
SS阶段
SR阶段
CS阶段
数据展示层
数据处理层
数据采集层
annotation
spanId
traceId
调用链
透明传输数据
生成网络拓扑
优化链路调用
优化系统瓶颈
快速定位请求失败原因
实现
原理
作用
服务追踪系统

该思维导图由 AI 生成,仅供参考

在微服务架构下,由于进行了服务拆分,一次请求往往需要涉及多个服务,每个服务可能是由不同的团队开发,使用了不同的编程语言,还有可能部署在不同的机器上,分布在不同的数据中心。
下面这张图描述了用户访问微博首页,一次请求所涉及的服务(这张图仅作为示意,实际上可能远远比这张图还要复杂),你可以想象如果这次请求失败了,要想查清楚到底是哪个应用导致,会是多么复杂的一件事情。
如果有一个系统,可以跟踪记录一次用户请求都发起了哪些调用,经过哪些服务处理,并且记录每一次调用所涉及的服务的详细信息,这时候如果发生调用失败,你就可以通过这个日志快速定位是在哪个环节出了问题,这个系统就是今天我要讲解的服务追踪系统

服务追踪的作用

在介绍追踪原理与实现之前,我们先来看看服务追踪的作用。除了刚才说的能够快速定位请求失败的原因以外,我这里再列出四点,它们可以帮你在微服务改造过程中解决不少问题。
第一,优化系统瓶颈。
通过记录调用经过的每一条链路上的耗时,我们能快速定位整个系统的瓶颈点在哪里。比如你访问微博首页发现很慢,肯定是由于某种原因造成的,有可能是运营商网络延迟,有可能是网关系统异常,有可能是某个服务异常,还有可能是缓存或者数据库异常。通过服务追踪,可以从全局视角上去观察,找出整个系统的瓶颈点所在,然后做出针对性的优化。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了微服务架构下的服务追踪系统,以及其在优化系统瓶颈、链路调用优化、生成网络拓扑和透明传输数据等方面的作用。服务追踪系统通过记录调用链路上的耗时,可以快速定位系统瓶颈点,评估调用路径的合理性,并生成系统的网络调用拓扑图。文章详细介绍了服务追踪系统的架构,包括数据采集层、数据处理层和数据展示层的实现方式。此外,还强调了理解服务追踪的基本概念对于实现服务追踪系统至关重要。整体而言,本文对服务追踪系统的原理和实现方式进行了深入剖析,为读者提供了全面的技术指导和实践经验。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(38)

  • 最新
  • 精选
  • Realm
    1 监控是若干个局部,单独采集、分析、展示;追踪是全局视角,有链的上下游传递的概念,通过某个id串联相关的监控; 2 诊断故障一般从链上分析出现问题的点,然后定位到点上的监控数据,看具体原因;

    作者回复: 嗯

    2018-09-08
    34
  • 要是结合docker,不用侵入式的追踪系统就完美了

    作者回复: mesh思路可以

    2018-09-08
    17
  • 楼下小黑哥
    相同: 1.整个流程一致。 不同: 数据采集维度不一样。监控采集单个服务或整个业务详细业务数据,而追踪系统采集是调用链路过程中调用埋点数据即非业务数据。

    作者回复: 对的

    2018-09-10
    12
  • kane
    我们团队当前也有这个痛点,我们的解决办法是:1.在调用链的源头生成TraceID,每个微服务在处理请求的时候将相关信息打印到日志文件2.通过ELK进行日志收集,可以在elk里进行traceid的检索。这样每次检索就把一次调用处理的所有日志都显示出来,提高问题定位的效率。对于老师讲的内容主要有两个问题,1.日志主动上报,会不会对微服务的资源有比较大的消耗呢?特别是比较频繁的调用处理。2.服务调用的耗时怎么计算的,没太看懂。

    作者回复: 主动上报采用udp方式对性能影响可以接受,另外服务调用的耗时也可以靠上报调用耗时来统计

    2018-10-30
    6
  • 回复何磊“日志上报的阶段是不是在rpc的四个过程中都应该上报?比如在ss阶段,由于服务端挂了,没有响应数据。那么这次rpc调用就无法查询了?” 服务端挂了,客户端会收到异常,还是可以在cr阶段上报

    作者回复: 对,客户端等到超时或者异常,就会记录下错误上报

    2018-09-10
    4
  • 九斤鱼
    这么频繁的上报,怎么避免影响性能呢?

    作者回复: 可以设置采样率

    2018-09-14
    1
  • 铂金小猪
    链路不是http呢?

    作者回复: 也可以的,就是埋点采集的代码不同

    2018-09-08
    1
  • 🍀 🍀 🍀 🐼
    微服务之间是否允许或者不允许互相调用呢

    作者回复: 一般都可以相互调用

    2018-12-04
  • Mac Kwan
    胡老师,这些跟踪系统有哪些是能供我们使用的呢?

    作者回复: 专栏后面有个章节会对比选型

    2018-09-12
  • 实时备理生成链路图,离线处理生成拓扑图?

    作者回复: 都可以实时生成

    2018-09-10
收起评论
显示
设置
留言
38
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部