Spring Cloud: 链路监控 Sleuth、 Zipkin

为什么要链路监控

在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个看似简单的前端请求可能最终需要调用很多次后端服务才能完成,那么当整个请求出现问题时,我们很难得知到底是哪个服务出了问题导致的,一个来自用户的请求先到达前端A(如前端界面),然后通过远程调用,到达系统的中间件B、C(如负载均衡、网关等),最后到达后端服务D、E,后端经过一系列的业务逻辑计算,最后将数据返回给用户。所以在微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,出现问题能够快速定位的目的。

Sleuth对于大部分用户来说都是透明的,系统间的交互信息都能被自动采集。用户可以通过日志文件获取链路数据,也可以将数据发给远程服务进行统一收集展示。

Spring Cloud Sleuth可以结合ZipKin,将信息发送到ZipKin,利用ZipKin的存储来存储信息,利用ZipKin UI来展示数据。

Zipkin

Zipkin是Twitter的一个开源项目,它基于Google的Dapper实现,被业界广泛使用。Zipkin致力于收集分布式系统的链路数据,提供了数据持久化策略,也提供面向开发者的API接口,用于查询数据,还提供了UI组件帮助我们查看具体的链路信息。

在这里插入图片描述
Zipkin的架构主要由4个核心组件构成。

  • Collector:链路数据收集器,主要用于处理从链路客户端发送过来的链路数据,将这些数据转换为Zipkin内部处理的Span格式,以支持后续的存储、分析和展示等功能。
  • Storage:存储组件,用来存储接收到的链路数据,默认会将这些数据存储在内存中,同时支持多种存储策略,比如将链路数据存储在MySQL、Cassandra和ElasticSearch中。
  • RESTful API:API组件,它是面向开发者的,提供外部访问API接口,可以通过这些API接口来自定义展示界面。
  • Web UI:UI组件,基于API接口实现的上层应用,用户利用UI组件可以很方便地查询和分析链路数据。

Zipkin安装

可以直接下载jar包运行:在这里插入图片描述

这里使用docker进行使用,同时存储使用ElasticSearch数据库, 在docker-compose启动文件中添加:

    elasticsearch: 
      image: elasticsearch:6.8.10
      restart: always
      networks:
        - spring
      
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值