zipkin 学习笔记

原创 2017年10月16日 23:44:57

zipkin 学习笔记

概述

Span—->追踪的基本单元

  • trace_id—->一个完整的rpc调用链拥有同一个trace_id
  • /name/id/—->一次rpc调用就产生一个span_id
  • parent_id/—->rpc的父级
  • Annotation/BinaryAnnotation/—->记录rpc服务本身以及业务的信息
  • timestamp/duration—->一次rpc耗用时间

Brave—->zipkin的传输基础

  • 拥有ServerTracer/ClientTracer/ServerRequestInterceptor/ServerResponseInterceptor/ClientRequestInterceptor/ClientResponseInterceptor等
  • ServerTracer—->用于服务端接收请求(setServerReceived)/确认请求(setServerSend)—->sr/ss
  • ClientTracer—->用于客户端发送请求(setClientSent)/接收响应(setClientReceived)—->cs/cr
  • ServerRequestInterceptor/ServerResponseInterceptor—->用于服务端,拦截请求/响应,记录请求信息等
  • ClientRequestInterceptor/ClientResponseInterceptor—->用于客户端,拦截请求/响应,记录信息等

SpanCollector—->span收集器,用于异步将拦截到的追踪信息,提交给zipkin服务器

  • HttpSpanCollector—->AbstractSpanCollector—->FlushingSpanCollector—->SpanCollector
    • SpanCollector—->提供收集span功能
    • FlushingSpanCollector—->提供异步刷新与队列存储支持
      • com.github.kristofa.brave.FlushingSpanCollector.Flusher#run
      • flush
    • AbstractSpanCollector—->提供编解码支持,将span按照编解码转换为字节码
      • reportSpans
    • HttpSpanCollector—->以POST方法application/json形式提交转换的span字节码信息
      • sendSpans

BraveServletFilter—->服务端过滤器,过滤请求与响应,发送sr (server received) and ss (server sent)

  • 委托给ServerRequestInterceptor.handle进行请求的处理,构建新的TraceData信息
  • 委托给ServerResponseInterceptor#handle进行响应的处理,再进行ServerTracer#setServerSend时候,添加span到spanCollector

BraveOkHttpRequestResponseInterceptor—->客户端拦截器,拦截请求/响应,cs/cr

  • 委托给ClientRequestInterceptor.handle进行请求的拦截,向request中添加Sampled/TraceId/SpanId/ParentSpanId信息头
  • 委托给ClientResponseInterceptor#handle进行响应的拦截,再进行clientTracer.setClientReceived时候,添加span到spanCollector

测试

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

zipkin c/c++库编译及环境搭建

zipkin的环境搭建参考上一篇调用追踪存储展示应用——zipkin环境搭建,官方关于c/cpp库的编译过于简单,而且资料甚少,在编译过程中遇到许多问题,特此总结一下,系统centos6.9 安装gc...

调用追踪存储展示应用——zipkin环境搭建

zipkin环境搭建小结: 安装java8,java8安装步骤,配置环境变量,/etc/profile中添加路径 export JAVA_HOME=/home/jdk1.8.0_141 export...

使用Zipkin 和 Brave 实现http(springmvc)服务调用跟踪(二)

上次讲了Brave为Spring提供的Servlet拦截器(ServletHandlerInterceptor)及Rest(BraveClientHttpRequestInterceptor)模板的拦...

zipkin 和 brave 使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[-] zipkin architectureinstallterminologybrave brave...

使用Zipkin和Brave 实现dubbo服务调用跟踪

通过dubbo的Filter来实现dubbo调用链的跟踪信息。 git项目地址:https://github.com/blacklau/http-dubbo-zipkin,请下载使用。 本工程通过...

zipkin

zipkinzipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。architecture 如图,在复杂的调用链路中假设存在一条调用链路响应缓慢,如何定位其中延迟高...

dapper 的学习

dapper 大规模分布式跟踪系统在分布式系统中,一次请求会跨越几个甚至几十个子系统所以我们很难统计出每个系统之间的耗时问题。 所以google研发出dapper , twitter基于dapper...

分布式调用链zipkin源码解析——客户端(待续)

前言 本文对zipkin核心难点做分析,对于比较简单或者很多文章说过的地方不做赘述。 我们通过debug一个demo来逐步分析zipkin客户端。 假设有这样一个拓扑依赖结构的分布式系统调用。我...
  • lemon89
  • lemon89
  • 2017年10月13日 15:29
  • 99

分布式跟踪系统(一):Zipkin的背景和设计

2010年谷歌发表了其内部使用的分布式跟踪系统Dapper的论文(http://static.googleusercontent.com/media/research.google.com/zh-CN...

Dubbox 链路追踪(基于Brave+Zipkin的简单实现)上

很多时候,我们都能体会到分布式架构的话好处,其实一个系统不大,做分布式的成本是很高的,系统变得松耦合,这样做的好处不言而喻,说说坏处吧,A系统远程调用B系统,B系统又依赖C,D系统,当线上某个接口报错...
  • linuu
  • linuu
  • 2017年01月12日 17:15
  • 4671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zipkin 学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)