组团学

认识Sleuth和Zipkin

阅读 (4544474)

1、微服务链路跟踪介绍

1.1、为什么要实现微服务链路跟踪

一个完整的微服务系统一般由成百上千,甚至上几万、几十万、几百万的服务实例构成。在这种规模下,如果出现问题,则准确跟踪问题点会十分困难。所以,需要用链路跟踪工具来监控微服务状态,当出现问题时能及时定位问题点,快速解决问题。

实现微服务链路跟踪主要有以下需求:

**实时监控:**完备的监控系统可以提供及时、准确的性能报告,可以了解请求的路径、请求耗费的时间、网络延迟状况、单个业务逻辑耗费时间等指标

**决策:**可以分析系统瓶颈、解决系统存在的问题,以及当前和未来的决策提供基础数据

**避免技术债务:**系统会根据业务需求不断地进行演变,如果过去遗留的问题没处理好,则会对新的功能产生影响。如果没有跟踪技术,则会产生大量技术债务。技术债务的累计会对修改或升级带来更多的问题

**快速定位故障:**如果要解决问题,则首先要发现问题,然后定位问题的故障点、及时采取措施解决问题。发现、定位、解决问题都非常重要,如果任何一点没有能及时得到解决,则在发生故障后会花费非常长的时间

1.2、微服务链路跟踪的技术要求

一个好的链路跟踪技术应满足以下要求:

**低消耗:**跟踪系统本质是发现某个系统的性能或故障问题,所以它不能反过来影响被监控系统的性能

**应用透明:**应用透明即要求链路跟踪技术对业务系统是透明的,没有侵入性,不会影响开发人员开发业务,或者不会因为开发人员的疏忽而失效

**延展性:**链路跟踪系统应能满足业务系统的发展的需求。当系统越来越庞大和复杂后,链路跟踪技术依然能快速地跟踪产生的数据,并及时地对数据进行统计和生成报表

**可控采样率:**可以通过设置采样率平衡性能消耗和采样质量

**可视化:**具有可视化的控制台也是链路跟踪的一个重要要求

2、认识Sleuth和Zipkin

2.1、Sleuth

Spring cloud 借助了Google Dapper、Twitter Zipkin和Appache HTrace的设计,提供了分布式跟踪的解决方案Sleuth。其兼容Zipkin、HTrace和Log-based追踪微服务的服务调用链路。

Sleuth术语:

跨度(Span):

它是链路跟踪的基本单元。Span通过一个64位的ID来唯一标识,它还包含摘要、时间戳时间、关键值注释(tags)和进度ID

跟踪(Trace):

一系列Span组成一个树状结构(即一个Trace)。和Span一样,Trace以另一个64位的ID来标识

标注(Annotation):

Annotation用于及时记录一个事件,可以定义请求的开始和停止等信息。比如,客户端发起一个请求,Annotation会描述这个Span的开始;服务器端获得请求并准备开始处理它,Annotation可以根据服务器端收到的请求时间戳、客户端发送请求时间戳来计算网络的延迟

2.2、Zipkin

Zipkin主要提供链路追踪的可视化功能。

**Zipkin的原理:**在服务调用的请求和响应中加入ID,表明上下游请求的关系;利用这些信息,可以可视化地分析服务调用链路和服务间的依赖关系。

需要 登录 才可以提问哦