springcloud上传文件_Spring Cloud实战:服务链路追踪Spring Cloud Sleuth

本文详细介绍了如何使用SpringCloud Sleuth集成Zipkin进行服务追踪。Zipkin是一个分布式的跟踪系统,用于收集微服务架构下的延迟数据。文章通过创建Zipkin Server、配置Eureka服务注册中心以及在服务端和服务客户端启用Sleuth,展示了如何建立一个完整的追踪解决方案。主要涉及的术语包括Span、Trace和Annotation,以及它们在分布式系统监控中的作用。

推荐阅读:

  1. Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC
  2. 一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官.

前言

Spring Cloud Sleuth 的主要功能就是为 分布式系统 提供 追踪解决方案,并且兼容支持了 Zipkin,只需要在 pom.xml 文件中引入相应的 依赖 即可。本文主要讲述 服务追踪组件 Zipkin,Spring Cloud Sleuth 集成了 Zipkin 组件。它主要用于 聚集 来自各个 异构系统实时监控数据,用来追踪 微服务架构 下的 系统延时问题

cb33d433d9e03ff389ad1c512b86431e.png

正文

1. 相关术语

1.1. Span

Span 是一个基本的 工作单元,用于描述一次 RPC 调用,Span 通过一个 64 位的 spanId 作为 唯一标识。Zipkin 中的 Span 还有其他数据信息,比如 摘要时间戳事件关键值注释 (tags) 以及 进度 ID (通常是 IP 地址)。Span 在不断的启动和停止,同时记录了 时间信息,一个 Span 创建后,必须在未来的某个时刻停止它。

1.2. Trace

一系列 Span 组成的一个 树状结构。例如,如果你正在跑一个大型 分布式系统,可能需要创建一个 Trace。

1.3. Annotation

表示 基本标注列表,一个 Annotation 可以理解成 Span 生命周期中 重要时刻数据快照,比如一个 Annotation 中一般包含 发生时刻(timestamp)、事件类型(value)、端点(endpoint)等信息。其中 Annotation 的 事件类型 包含以下四类:

  • cs - Client Sent

客户端 发起一个请求,这个 Annotion 描述了这个 Span 的开始。

  • sr - Server Received

服务端 获得请求并 准备开始 处理它,如果将 sr 减去 cs 的 时间戳 便可得到 网络延迟

  • ss - Server Sent

服务端 完成请求处理,如果将 ss 减去 sr 的 时间戳,便可得到 服务端 处理请求消耗的时间。

  • cr - Client Received

客户端 成功接收到 服务端 的响应,如果将 cr 减去 cs 的 时间戳,便可得到 整个请求 所消耗的 总时间

2. 项目结构

本文案例主要由 四个模块 组成:

  • eureka-server:作为 服务注册中心
  • zipkin-server:作为 链路追踪服务中心,负责存储 链路数据
  • service-hi:对外暴露一个 测试接口,同时作为 链路追踪服务端,负责 产生链路数据
  • service-zuul:作为 路由网关,负责 请求转发,同时作为 链路追踪客户端,产生 链路数据,并上传至 zipkin-server。

在 8761 端口 开启 eureka-server 服务注册中心,参考前面的文章即可,这里不再演示创建。

3. 构建zipkin-server

新建一个 Spring Boot 应用模块 zipkin-server,它的 pom.xml 完整依赖如下:

 4.0.0  org.springframework.boot spring-boot-starter-parent 1.5.3.RELEASE    io.github.ostenant.springcloud zipkin-server 0.0.1-SNAPSHOT zipkin-server Demo project for Spring Boot  1.8 Dalston.RELEASE    org.springframework.cloud spring-cloud-starter-eureka   io.zipkin.java zipkin-server   io.zipkin.java zipkin-autoconfigure-ui   org.springframework.boot spring-boot-starter-test test      org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import       org.springframework.boot spring-boot-maven-plugin   

在应用的入口类上, 加上注解 @EnableZipkinServer,开启 Zipkin Server 的功能。

@EnableZipkinServer@EnableEurekaClient@SpringBootApplicationpublic class ZipkinServerApplication { public static void main(String[] args) { SpringApplication.run(ZipkinServerApplication.class, args); }}

配置文件 application.yml 中指定服务端口号为 9411,并向 Eureka 注册中心进行 服务注册

eureka: client: service-url: defaultZone: http://localhost:8761/eureka/server: port: 9411spring: application: name: zipkin-server

4. 构建service-hi

新建一个 Spring Boot 应用模块 service-hi,在它的 pom.xml 中引入 引入起步依赖 spring-cloud-starter-zipkin,完整依赖如下:

 4.0.0  org.springframework.boot spring-boot-starter-parent 1.5.3.RELEASE    io.github.ostenant.springcloud service-hi 0.0.1-SNAPSHOT eureka-client Demo project for Spring Boot  1.8 Dalston.SR1    org.springframework.cloud spring-cloud-starter-eureka   org.springframework.cloud spring-cloud-starter-zipkin   org.springframework.boot spring-boot-starter-web   org.springframework.boot spring-boot-starter-test test      org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import       org.springframework.boot spring-boot-maven-plugin   

在它的 配置文件 application.yml 中通过配置项 spring.zipkin.base-url 指定 zipkin server 的地址。

eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/server: port: 8763spring: application: name: service-hi zipkin: # base-url: http://localhost:9411/ # 若在同一个注册中心的话可以启用自动发现,省略base-url locator: discovery: enabled: true #自动发现 sleuth: sampler: percentage: 1.0

到此为止 ZipKin 客户端 已经整合完毕,最后在 应用启动类 上对外暴露一个 API 接口 方便测试

@SpringBootApplication@EnableEurekaClient@RestControllerpublic class ServiceHiApplication { public static void main(String[] args) { SpringApplication.run(ServiceHiApplication.class, args); } @Value("${server.port}") private String port; @RequestMapping("/hi") public String home(@RequestParam String name) { return "Hi " + name + 
内容概要:本文围绕直驱式永磁同步电机(PMSM)的矢量控制策略开展系统性研究,基于Simulink平台构建了完整的闭环仿真模型,深入探讨了电机在矢量控制下的动态响应特性与控制性能。研究内容涵盖了矢量控制的核心理论与关键技术模块,包括Clarke与Park坐标变换、转子磁场定向控制(FOC)、SVPWM调制算法、双闭环PI控制器(电流环与速度环)的设计与参数整定。通过仿真验证了系统在启动、突加负载及变速工况下的稳定性、抗干扰能力与动态调节精度,有效实现了对电机转矩与转速的精确控制。该模型不仅有助于深化对PMSM控制机理的理解,也为高性能电机驱动系统的算法开发与工程化应用提供了可靠的仿真验证平台。; 适合人群:具备自动控制原理、电机学基础及Simulink仿真能力的电气工程、自动化、新能源等相关专业的高年级本科生、研究生以及从事电机驱动开发的初级科研人员与工程师。; 使用场景及目标:①作为高校课程设计、毕业设计或科研项目中PMSM控制系统的学习案例,用于掌握矢量控制算法的实现流程与模块化设计方法;②帮助研究人员理解各控制环节间的耦合关系,通过调整PI参数优化系统性能,并为进一步研究无传感器控制、弱磁扩速、先进非线性控制策略等高级课题奠定基础; 阅读建议:建议结合经典电机控制教材同步学习,重点剖析各功能模块的信号流向与数学原理,亲自动手搭建仿真模型,通过改变运行条件和控制器参数观察系统响应变化,从而深入掌握矢量控制系统的动态特性和调试技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值