专栏首页Java 学习Spring Cloud 系列之链路监控 Sleuth - Zipkin

Spring Cloud 系列之链路监控 Sleuth - Zipkin

1.1 简介

1.1.1 概述

  在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。在微服务比较少的时候,某一个服务出现问题我们可以很快排查出来。现在一个项目中微服务很多而且调用关系复杂,某一个服务出现问题我们很难能够排查出来。Spring Cloud Sleuth 为 Spring Cloud 实现了分布式跟踪解决方案,它大量借用了 Google Dapper、Twitter Zipkin 和 Apache HTrace 的设计。

1.1.2 相关术语

Spring Cloud Sleuth 采用的是 Google 的开源项目 Dapper 的专业术语。 Span:基本工作单元,发送一个远程调度任务 就会产生一个 Span,Span 是一个 64 位 ID 唯一标识的,Trace 是用另一个 64 位 ID 唯一标识的,Span 还有其他数据信息,比如摘要、时间戳事件、Span 的 ID、以及进度 ID。 Trace:一系列 Span 组成的一个树状结构。请求一个微服务系统的 API 接口,这个 API 接口,需要调用多个微服务,调用每个微服务都会产生一个新的 Span,所有由这个请求产生的 Span 组成了这个 Trace。 Annotation:用来及时记录一个事件的,一些核心注解用来定义一个请求的开始和结束 。这些注解包括以下:   ♘ cs - Client Sent:客户端发送一个请求,这个注解描述了这个 Span 的开始   ♘ sr - Server Received:服务端获得请求并准备开始处理它,如果将其 sr 减去 cs 时间戳便可得到网络传输的时间。   ♘ ss - Server Sent(服务端发送响应):该注解表明请求处理的完成(当请求返回客户端),如果 ss 的时间戳减去 sr 时间戳,就可以得到服务器请求的时间。   ♘ cr - Client Received(客户端接收响应):此时 Span 的结束,如果 cr 的时间戳减去 cs 时间戳便可以得到整个请求所消耗的时间。

1.2 Zipkin

1.2.1 Zipkin 服务端

  Spring Cloud 从 F 版开始就不需要自己构建服务端了,只需要使用他提供的 jar 就可以了 ☛ 下载地址,启动 jar 访问 9411 端口就可以看到页面了。

1.2.2 Zipkin 客户端

☞ 相关依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

☞ 配置文件

# 在需要被监控的服务中加入如下配置
spring:
  zipkin:
    base-url: http://127.0.0.1:9411
  sleuth:
    sampler:
      # 采样值介于 0 - 1 之间,1 表示全部采集
      percentage: 1

☞ 测试

  请求被监控的服务,我们乐意在 Zipkin 的 UI 界面中看到请求耗时等数据信息。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Security 在 Spring Boot 中集成 JWT + RSA【分布式】

      分布式认证就是我们常说的单点登录(SSO),即用户只需要登录一次就可以访问所有互相信任的子系统。在每台服务中都有一个 session 但是各个 sessio...

    Demo_Null
  • 详解请求消息 resquest

       Request 对象,又称为请求对象,该对象派生自 HTTPResponse 类,是 ASP 中重要的服务器内置对象,它连接着 Web 服务器和 Web ...

    Demo_Null
  • 来聊聊 HTTP 如何

      万维网 WWW(world wide web) 发源于欧洲日内瓦量子物理实验室 CERN,正是 WWW 技术的出现使得因特网得以超乎想象的速度迅猛发展。这项...

    Demo_Null
  • 干货 | PCB设计规范其实就是“怎么摆”和“怎么连”!

    PCB设计纷繁复杂,各种意料之外的因素频频来影响整体方案的达成,如何能驯服性格各异的零散部件?怎样才能画出一份整齐、高效、可靠的PCB图?今天就让我们来盘点一下...

    MCU起航
  • Spring Cloud构建微服务架构:分布式服务跟踪(收集原理)【Dalston版】

    在本节内容之前,我们已经对如何引入Sleuth跟踪信息和搭建Zipkin服务端分析跟踪延迟的过程做了详细的介绍,相信大家对于Sleuth和Zipkin已经有了一...

    程序猿DD
  • zookeeper快速入门——简介

            在几十年前,一个独立的计算机上往往部署着一套完整的应用系统。当时因为网络稳定性及速度的限制,将相关联的服务部署在一台机器上,让它们使用系统机制通...

    方亮
  • Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】

    通过之前的《入门示例》,我们已经为两个由SpringCloud构建的微服务项目 trace-1和 trace-2引入了Spring Cloud Sleuth的基...

    程序猿DD
  • BinderPool — Andorid端的“服务发现治理工具” 1. 背景2. AIDL3. Binder 连接池1.4 Binder客户端1.5 总结

    随着公司业务的发展,项目规模会越来越大,可能会遇到多多服务IPC的场景,有很多模块,而每一个模块都需要和服务端通讯,那么我们也要为每一个模块创建特定的AIDL文...

    mantou
  • 001.Nginx简介

    Nginx是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD...

    木二
  • Java8-Collectors.groupingBy()-JDK源码分析

    groupingBy方法有多个重载方法,但是根本上只有一个方法。之所以提供这么多方法的重载,主要目的还是为了开发者调用方便。通过对于此分组静态方法的学习,我们...

    Fisherman渔夫

扫码关注云+社区

领取腾讯云代金券