【微服务架构】调用链追踪系统对比
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 概述 当代的互联网服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的服务集上,这些服务有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,需要一个用于分析性能问题的系统可以监控那些横跨了不同的应用、不同的服务器之间的关联动作,调用链追踪系统应运而生。 目标 分布式调用链追踪系统一般有以下五个目标: 低消耗(low-overhead)调用链追踪埋点不能占用链路上太长的时间,也不应消耗太多的机器资源。 低侵入(low-invasiveness)作为非业务组件,应当尽可能少侵入或者不侵入其他业务系统,保持对使用方的透明性,减少开发人员的负担和接入门槛。 可扩展(scalability)整个调用链追踪通路都应该可扩展,以应对不断接入的服务和公司未来的发展。 时效性(time-efficient)从追踪数据采集,分析处理,查询,展示的整个通路都要尽量快速。 决策支持(decision-support)需要为业务定位问题,分析服务,提供丰富清晰的报表。 功能 调用链追踪系统通常包含的功能如下: 对调用请求的整个链路进行追踪,分析每个环节的耗时,协助开发运维人员找到性能瓶颈 找出服务之间的依赖拓扑关系,如每个服务依赖哪些服务