链路追踪(Sleuth、Zipkin)

1.技术背景

在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个看似简单的前端请求可能最终需要调用很多次后端服务才能完成,那么当整个请求出现问题时,我们很难得知到底是哪个服务出了问题导致的,这时就需要解决一个问题,即如何快速定位服务故障点,分布式系统调用链追踪技术就此诞生了。

2.Zipkin

ZipKin是一个由Twitter公司提供并开放源代码分布式的跟踪系统, 它可以帮助收集服务的时间数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。每个服务向ZipKin报告定时数据, ZipKin会根据调用关系通过ZipKinUI生成依赖关系图, 展示多少跟踪请求经过了哪些服务, 该系统让开发者可通过一个Web前端轻松地收集和分析数据,例如用户每次请求服务的处理时间等,可非常方便地监测系统中存在的瓶颈。
Zip Kin提供了可插拔数据存储方式:In-Memory、MySQL、Cassandra以及Elastic search。
我们可以根据需求选择不同的存儲方式,生成环境一般都雷要持久化。我们这里采用Elasticsearch作为ZipKin的数据存储器.

3.Spring Cloud Sleuth

一般而言,一个分布式服务追踪系统,主要由3部分组成:数据收集、数据存储和数据展示。


Spring Cloud Sleuth为服务之闻的调用提供链路追踪, 通过Sleuth可以很清楚地了解到一个服务请求经过了哪些服务,每个服务处理花费了多长时间,从而让我们可以很方便地理清各微服务间的调用关系.此外, Sleuth还可以帮助我们:
·耗时分析:通过Sleuth可以很方便地了解到每个采样请求的耗时, 从而分析出哪些服务调用比较耗时.
·可视化错误:对于程序未捕捉的异常, 可以通过集成Zip Kin服务在界面上看到.
·链路优化:对于调用比较频繁的服务,可以针对这些服务实施一些优化措施.
Spring Cloud Sleuth可以结合Zip Kin, 将信息发送到Zip Kin, 利用Zip Kin的存储来存储信息, 利用Zip Kin UI来展示数据。






posted @ 2020-03-22 00:26  马中赤兔  阅读(2319)  评论(0编辑  收藏  举报