08 | 如何追踪微服务调用?
胡忠想
该思维导图由 AI 生成,仅供参考
在微服务架构下,由于进行了服务拆分,一次请求往往需要涉及多个服务,每个服务可能是由不同的团队开发,使用了不同的编程语言,还有可能部署在不同的机器上,分布在不同的数据中心。
下面这张图描述了用户访问微博首页,一次请求所涉及的服务(这张图仅作为示意,实际上可能远远比这张图还要复杂),你可以想象如果这次请求失败了,要想查清楚到底是哪个应用导致,会是多么复杂的一件事情。
如果有一个系统,可以跟踪记录一次用户请求都发起了哪些调用,经过哪些服务处理,并且记录每一次调用所涉及的服务的详细信息,这时候如果发生调用失败,你就可以通过这个日志快速定位是在哪个环节出了问题,这个系统就是今天我要讲解的服务追踪系统。
服务追踪的作用
在介绍追踪原理与实现之前,我们先来看看服务追踪的作用。除了刚才说的能够快速定位请求失败的原因以外,我这里再列出四点,它们可以帮你在微服务改造过程中解决不少问题。
第一,优化系统瓶颈。
通过记录调用经过的每一条链路上的耗时,我们能快速定位整个系统的瓶颈点在哪里。比如你访问微博首页发现很慢,肯定是由于某种原因造成的,有可能是运营商网络延迟,有可能是网关系统异常,有可能是某个服务异常,还有可能是缓存或者数据库异常。通过服务追踪,可以从全局视角上去观察,找出整个系统的瓶颈点所在,然后做出针对性的优化。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了微服务架构下的服务追踪系统,以及其在优化系统瓶颈、链路调用优化、生成网络拓扑和透明传输数据等方面的作用。服务追踪系统通过记录调用链路上的耗时,可以快速定位系统瓶颈点,评估调用路径的合理性,并生成系统的网络调用拓扑图。文章详细介绍了服务追踪系统的架构,包括数据采集层、数据处理层和数据展示层的实现方式。此外,还强调了理解服务追踪的基本概念对于实现服务追踪系统至关重要。整体而言,本文对服务追踪系统的原理和实现方式进行了深入剖析,为读者提供了全面的技术指导和实践经验。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》,新⼈⾸单¥59
《从 0 开始学微服务》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(38)
- 最新
- 精选
- Realm1 监控是若干个局部,单独采集、分析、展示;追踪是全局视角,有链的上下游传递的概念,通过某个id串联相关的监控; 2 诊断故障一般从链上分析出现问题的点,然后定位到点上的监控数据,看具体原因;
作者回复: 嗯
2018-09-0834 - 郁要是结合docker,不用侵入式的追踪系统就完美了
作者回复: mesh思路可以
2018-09-0817 - 楼下小黑哥相同: 1.整个流程一致。 不同: 数据采集维度不一样。监控采集单个服务或整个业务详细业务数据,而追踪系统采集是调用链路过程中调用埋点数据即非业务数据。
作者回复: 对的
2018-09-1012 - kane我们团队当前也有这个痛点,我们的解决办法是:1.在调用链的源头生成TraceID,每个微服务在处理请求的时候将相关信息打印到日志文件2.通过ELK进行日志收集,可以在elk里进行traceid的检索。这样每次检索就把一次调用处理的所有日志都显示出来,提高问题定位的效率。对于老师讲的内容主要有两个问题,1.日志主动上报,会不会对微服务的资源有比较大的消耗呢?特别是比较频繁的调用处理。2.服务调用的耗时怎么计算的,没太看懂。
作者回复: 主动上报采用udp方式对性能影响可以接受,另外服务调用的耗时也可以靠上报调用耗时来统计
2018-10-306 - 丢回复何磊“日志上报的阶段是不是在rpc的四个过程中都应该上报?比如在ss阶段,由于服务端挂了,没有响应数据。那么这次rpc调用就无法查询了?” 服务端挂了,客户端会收到异常,还是可以在cr阶段上报
作者回复: 对,客户端等到超时或者异常,就会记录下错误上报
2018-09-104 - 九斤鱼这么频繁的上报,怎么避免影响性能呢?
作者回复: 可以设置采样率
2018-09-141 - 铂金小猪链路不是http呢?
作者回复: 也可以的,就是埋点采集的代码不同
2018-09-081 - 🍀 🍀 🍀 🐼微服务之间是否允许或者不允许互相调用呢
作者回复: 一般都可以相互调用
2018-12-04 - Mac Kwan胡老师,这些跟踪系统有哪些是能供我们使用的呢?
作者回复: 专栏后面有个章节会对比选型
2018-09-12 - 丢实时备理生成链路图,离线处理生成拓扑图?
作者回复: 都可以实时生成
2018-09-10
收起评论