• Spring Cloud Sleuth


    Spring Cloud Sleuth为Spring Cloud实现了分布式链路跟踪解决方案。也引入了Google论文 Dapper 中的术语。

    Span:基本工作单元,例如,发送RPC是一个新的span,就像向RPC发送响应一样,Span由span的唯一64位ID标识,另一个64位ID标识其所属的Trace。Span还有其他数据,例如描述、带时间戳的事件、键值annotations(标签),导致它们的span的ID以及进程ID(通常是IP地址)。

    span可以启动和停止,它们可以跟踪自己的时间信息,创建span后,必须在将来的某个时刻停止它。

    启动Trace的初始span称为 root span ,该span的ID值等于trace ID。

    Trace:一组span形成的树状结构,例如,如果运行分布式大数据存储,则可能由 PUT 请求形成trace。

    Annotation:用于及时记录事件的存在,使用 Brave 工具,不再需要为 Zipkin 设置特殊的事件来了解客户端和 服务器 是谁、请求在哪里开始以及在哪里结束,然而,出于学习目的,标记这些事件以突出发生了什么类型的操作。

    • cs :Client Sent,客户端发起了一个请求,这个annotation表示span的开始。
    • sr :Server Received,服务器端获得了请求并开始处理它,从此时间戳中减去 cs 时间戳会显示网络延迟。
    • ss :Server Sent,在请求处理完成时注释(当响应被发送回客户端时),从此时间戳中减去 sr 时间戳会显示服务器端处理请求所需的时间。
    • cr :Client Received,表示span的结束,客户端已成功从服务器端收到响应,从此时间戳中减去 cs 时间戳会显示客户端从服务器接收响应所需的全部时间。

    下图显示了系统中的 Span 和 Trace ,以及Zipkin annotations:

    Spring Cloud 参考文档(Spring Cloud Sleuth介绍)

    标记的每种颜色表示一个span(有七个span — 从 A 到 G ),请考虑以下标记:

    Trace Id = X Span Id = D Client Sent

    此标记表示当前span的 Trace Id 设置为 X , Span Id 设置为 D ,此外,还发生了 Client Sent 事件。

    下图显示了span的父—子关系:

    Spring Cloud 参考文档(Spring Cloud Sleuth介绍)

    https://github.com/spring-cloud/spring-cloud-sleuth

    实际项目中若已引入Spring Could sleuth包,则默认会在打印日志时输出traceId、spanId等内容,若它调用一个也是用Spring Could sleuth的服务,则会自动传递traceId

    类似这种traceId的传递操作,在服务内多采用ThreadLocal或MDC的方式,在分布式微服务时一般在request header或url参数中传递。 

  • 相关阅读:
    Java集合中迭代器
    java 基础归纳总结(三)
    java 基础归纳总结(二)
    java 基础归纳总结(一)
    python之hashlib模块
    python之configparser模块
    Python之time模块
    python之os模块
    python之random模块
    python generator(生成器)
  • 原文地址:https://www.cnblogs.com/doit8791/p/11192745.html
Copyright © 2020-2023  润新知