一:链路追踪的由来
在一个系统中一般会有很多个微服务,一般一个接口可能会调用多个微服务,而调用的微服务又可能会再调用其它微服务(微服务A --> 微服务B --> 微服务C --> 微服务D
),如果微服务A的某个接口调用耗时较长,我们怎么知道到底是哪块代码耗时较长呢,是调用微服务B耗时较长呢?还是调用微服务C耗时较长呢?,还是调用微服务D耗时较长呢?我们可以通过一个非常笨的方法就是在每个微服务接口上都打印每个接口的执行时间,这样做显然很麻烦也不够优雅,那么有什么方法能快速的获取某个接口都调用了哪些接口,以及调用的接口内部又调用了其它什么接口,并且能知道调用每个接口总共的耗时时间呢?这就链路追踪
要解决的问题。
链路追踪有多种组件,其中Sleuth是链路追踪的其中一种实现方式,用于统计微服务链路之间的调用数据,Sleuth通常会结合Zipkin一起使用,Zipkin是一个Web UI用于展示Sleuth的链路日志。
二: Zipkin集成
Zipkin是一个WebUI用于展示Sleuth所搜集的链路日志。Sleuth会将链路日志会发送到MQ中,Zipkin再从MQ中获取链路日志。
2.1 启动RabbitMQ
启动RabbitMQ,http://localhost:15672/ guest guest