分布式系统中很难找到哪个接口响应慢,排查发现问题慢
如果能做出第三方系统,通过web界面就能快速找到问题—这就是链路追踪系统
技术选型
java 用 zipkin(用在springboot) 或者 skywalking
go 用 jaeger(go 语言开发的,有问题的话你能深入源码解决)
jaeger install and 架构
1、通过 docker install. 通过http://ip:port就能访问啦
架构
Application就是我们的应用,jaeger-client(各种语言) 将信息 UDP 发送到agent—>push到 jaeger-collector—>将数据放到DB里面
jaeger-query从数据库里面查询出数据来,在UI里面显示
Spark Job来计算服务间的依赖关系
OpenTracing
就像type-c接口一样,如果链路追踪谁都可以用,就需要定义标准
Tracer 链路
比如把查询购物车的代码监控下,看下执行时间多长
下图从表单验证开始所有串起来叫一个tracer,你想跟踪一个接口,必须先创建tracer
span 和 SpanContext
span: 什么时候发起的,什么时候结束的,时长是多少?操作名称是什么?这一次调用叫做span
spancontext:它的父span是谁,属于哪个tracer的,这个span的id,将完整的span信息报告给jaeger,它才能完整地展示出这条链路