在一个大型分布式系统中(一个完备的云计算系统也是一个巨无霸的分布式系统) 任何一个client的请求调用,会在分布式系统中产生上百次的调用(各种缓存、中间件、数据库、微服务),一旦一个请求异常;那具体到哪个系统服务异常就变得很重要的;【在分布式监控系统比较低级时,比如只能监控某一个微服务的运行情况:这时就需要一些人力来保证整个链路的问题的及时发现,一个人维护100个系统的稳定性,知道哪个系统是否异常,通过这种方式来第一时间知晓哪个系统出现问题】。如果开发一个完善的分布式系统,可以清晰、直观的看到任何一个请求在分布式系统里面任何一个调用的详细情况,就可以在第一时间进行发现问题,这样效率很高!
那怎么样设计和开发一个分布式跟踪监控系统呢?下面我们就慢慢说来:
1 分布式调用跟踪和调用链的介绍
文章基于Goolge 的分布式调用系统Dapper 的理解来讲的,如果有不正确的请指正:
- 分布式调用跟踪:就是前端的一次请求产生的分布式调用汇总起来分析;同一次前端请求产生的网络调用就组成了调用链
- 调用链:调用链一般用树壮结构来展示的,一个调用链的入口开始,根据调用的时间顺序,依次用展示出来,并显示每次调用的状态和耗费的时间latency
- 调用链的一个重要的信息就是:访问各个节点的先后顺序、节点的状态是否正常、节点的latency
2. 调用链实现原理简介
因为同一时间中间件的调用有很多,所以首先需要区分这次调用是哪个调用链的;我们在前端请求到达前端的业务处理服务器时【web 服务器】会执行Dapper 的埋