微服务下的分布式链路追踪系统Sleuth+Zipkin

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
可观测链路 OpenTelemetry 版,每月50GB免费额度
简介: 微服务下的分布式链路追踪系统Sleuth+Zipkin

公众号merlinsea


微服务存在的问题:


   微服务调用链路复杂,如果出现了问题【不方便快速排查和定位】。分布式应⽤架构虽然满⾜了应⽤横向扩展的需求,但是运维和诊断的过程变得 越来越复杂,例如会遇到接⼝诊断困难、应⽤性能诊断复杂、架构分析复杂等难题,传统的监控⼯具并⽆法满⾜,分布式链路系统由此诞⽣。


核心:


   将⼀次请求分布式调⽤,使⽤GPS定位串起来,记录每个调⽤的耗时、性能等⽇志,并通过可视化⼯具展示出来。


Sleuth的介绍:一款专⻔⽤于记录链路数据的开源组件,通过记录每一个分布式调用中每一个微服务的元数据信息【包括摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID

微服务中引入Sleuth依赖


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


Zipkin介绍:是一款分布式系统的应用性能管理工具可,可以和Sleuth进行整合,Sleuth收集的元数据信息通过http和Zipkin进行交互,Zipkin将这些元数据信息进行可视化展示。Zipkin是一款C/S架构的组件,客户端收集的数据发送到服务端进行展示。


0、下载对应的jar包,启动Zipkin的后台服务(其实就是一个java项目)


java -jar zipkin-server-2.12.9-exec.jar
zipkin访问⼊⼝:http://127.0.0.1:9411/zipkin/


1、微服务中引入Zipkin的依赖

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


2、添加Zipkin的配置文件application.yml

spring:
  application:
    name: api-gateway
  zipkin:
    base-url: http://127.0.0.1:9411/ #zipkin地址
    discovery-client-enabled: false  #不用开启服务发现
  #指定sleuth的采样百分比,默认是0.1  
  sleuth:
    sampler:
      probability: 1.0 #采样百分比


如果需要将zipkin收集的元数据信息持久化到数据库中,需要去官网找一下我们应该设计什么样格式的数据库【一般第三方中间件官方都会有说明】,然后建好数据库以后启动服务端程序的时候指定数据库即可。


带持久化的启动zipkin


java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin_log --MYSQL_USER=root --MYSQL_PASS=mysqlroot


640.jpg


zipkin的访问后台页面

640.jpg


访问localhost:8889/order-server/api/v1/video_order/save  接口的调用链路如下:


640.jpg


总结:


中间件的架构图:客户端项目-后台服务项目-前端界面UI

640.jpg


vip课程是指同学们加入我们的vip学习群,vip群里面的小伙们可以永久参加所有的直播算法刷题课程,我每天直播的时间是早上8:30-9:30,通过腾讯会议在线讲解算法刷题,语言包括c++,java和golang版本,只要加入了vip群,除了每天的直播刷题外,前45位加入的同学,我会额外赠送我所有的学习实战资料,包括docker、git、java io、leetcode算法、java源码分析、jdk新特性、kafka、linux、mybatis、mybatis plus、mysql、mysql刷题、netty、nginx、python、rabbitmq、redis、sharding jdbc、spring、springboot、springcloud、并发编程、html+css、微信支付实战所有内容的学习笔记,总共800+张的文档资料。


vip刷题班课程的价格:800元/人 ,联系我即可报名参加。

相关实践学习
基于OpenTelemetry构建全链路追踪与监控
本实验将带领您快速上手可观测链路OpenTelemetry版,包括部署并接入多语言应用、体验TraceId自动注入至日志以实现调用链与日志的关联查询、以及切换调用链透传协议以满足全链路打通的需求。
分布式链路追踪Skywalking
Skywalking是一个基于分布式跟踪的应用程序性能监控系统,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,提供了一种简便的方式来清晰地观测分布式系统,具有分布式追踪、性能指标分析、应用和服务依赖分析等功能。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。Skywalking基于OpenTracing规范开发,具有性能好,支持多语言探针,无侵入性等优势,可以帮助我们准确快速的定位到线上故障和性能瓶颈。 在本套课程中,我们将全面的讲解Skywalking相关的知识。从APM系统、分布式调用链等基础概念的学习加深对Skywalking的理解,从0开始搭建一套完整的Skywalking环境,学会对各类应用进行监控,学习Skywalking常用插件。Skywalking原理章节中,将会对Skywalking使用的agent探针技术进行深度剖析,除此之外还会对OpenTracing规范作整体上的介绍。通过对本套课程的学习,不止能学会如何使用Skywalking,还将对其底层原理和分布式架构有更深的理解。本课程由黑马程序员提供。
相关文章
|
3月前
|
存储 消息中间件 Java
快速了解分布式跟踪系统 Zipkin
【8月更文挑战第8天】快速了解分布式跟踪系统 Zipkin
54 3
快速了解分布式跟踪系统 Zipkin
|
11天前
|
存储 NoSQL 关系型数据库
微服务Zipkin链路追踪原理,图解版,一文吃透!
本文重点讲解Zipkin链路追踪的原理与使用,帮助解决微服务架构下的服务响应延迟等问题,提升系统性能与稳定性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务Zipkin链路追踪原理,图解版,一文吃透!
|
1月前
|
监控 Java 对象存储
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
41 1
|
3月前
|
数据可视化 Java Nacos
Sleuth+Zipkin 实现 SpringCloud 链路追踪
【8月更文挑战第9天】Sleuth+Zipkin 实现 SpringCloud 链路追踪
93 1
Sleuth+Zipkin 实现 SpringCloud 链路追踪
|
4月前
|
存储 监控 Java
zipkin 与 sleuth 实现链路追踪
zipkin 与 sleuth 实现链路追踪
69 0
|
5月前
|
存储 消息中间件 Java
【分布式链路追踪技术】sleuth+zipkin
【分布式链路追踪技术】sleuth+zipkin
70 2
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
3月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
1天前
|
消息中间件 供应链 架构师
微服务如何实现低耦合高内聚?架构师都在用的技巧!
本文介绍了微服务的拆分方法,重点讲解了“高内聚”和“低耦合”两个核心设计原则。高内聚强调每个微服务应专注于单一职责,减少代码修改范围,提高系统稳定性。低耦合则通过接口和消息队列实现服务间的解耦,确保各服务独立运作,提升系统的灵活性和可维护性。通过领域建模和事件通知机制,可以有效实现微服务的高效拆分和管理。
17 7
下一篇
无影云桌面