您现在的位置是:主页 > news > 产品设计就业方向/seo常见优化技术
产品设计就业方向/seo常见优化技术
admin2025/6/23 1:20:28【news】
简介产品设计就业方向,seo常见优化技术,网站建设培训机构,河南濮阳疫情最新消息一、Sleuth介绍 为什么要使用微服务跟踪?它解决了什么问题? 1.微服务的现状? 微服务的现状 随着业务的发展,单体架构变为微服务架构,并且系统规模也变得越来越大,各微服务间的调用关系也变得越来越复杂。多服务…
一、Sleuth介绍
为什么要使用微服务跟踪?它解决了什么问题?
1.微服务的现状?
微服务的现状
随着业务的发展,单体架构变为微服务架构,并且系统规模也变得越来越大,各微服务间的调用关系也变得越来越复杂。
多服务协同工作
在微服务的应用中,一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果
复杂的调用链条容易出错
在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引起整个请求最后的失败
例如:
在微服务系统中,一个来自用户的请求,请求先达到前端A(如前端界面)然后通过远程调用,到达系统中间件B,C(负载均衡,网关等),最后达到后端服务D,E,后端经过一系列的业务逻辑计算最后将数据返回给用户,对于这样一个请求,经历了这么多个服务,怎么样将它的请求过程的数据记录下来呢?这就需要用到服务链路追踪
2.微服务跟踪解决了什么问题?
微服务跟踪(sleuth)其实是一个工具,它在整个分布式系统中能跟踪一个用户请求的过程(包括数据采集,数据传输,数据存储,数据分析,数据可视化),捕获这些跟踪数据,就能构建微服务的整个调用链的视图,这是调试和监控微服务的关键工具。
SpringCloudSleuth有4个特点
特点 | 说明 |
---|---|
提供链路追踪 | 通过sleuth可以很清楚的看出一个请求经过了哪些服务, 可以方便的理清服务局的调用关系 |
性能分析 | 通过sleuth可以很方便的看出每个采集请求的耗时, 分析出哪些服务调用比较耗时,当服务调用的耗时 随着请求量的增大而增大时,也可以对服务的扩容提 供一定的提醒作用 |
数据分析 优化链路 | 对于频繁地调用一个服务,或者并行地调用等, 可以针对业务做一些优化措施 |
可视化 | 对于程序未捕获的异常,可以在zipkpin界面上看到 |
二、Sleuth案例
我们通过一个简单的微服务调用案例来演示下Sleuth是怎么跟踪请求调用的,案例结构图如下:
一、创建sleuth-product服务
1、导入相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>my-springcloud</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>sleuth-trace2</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>
2、配置文件,注册到eureka服务中心
spring:application:name: trace-2server:port: 5002#指定服务中心的地址
eureka:client:service-url:defaultZone: http://localhost:1111/eureka/
3、创建启动类
@SpringBootApplication
@EnableDiscoveryClient
public class Trace2Application {public static void main(String[] args) {SpringApplication.run(Trace2Application.class, args);}}
4、创建一个controller,让消费者调用
@RestController
@Slf4j
public class Trace2Controller {@RequestMapping(value = "trace2",method = RequestMethod.GET)public String trace2(){log.info("===call trace-2=====");return "trace2";}
}
二、创建sleuth-cosumer服务
1、导入相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>my-springcloud</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>sleuth-trace1</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>
2、配置文件
spring:application:name: trace-1server:port: 5000#指定服务中心的地址
eureka:client:service-url:defaultZone: http://localhost:1111/eureka/
3、创建主应用类
@SpringBootApplication
@EnableDiscoveryClient
public class Trace1Application {public static void main(String[] args) {SpringApplication.run(Trace1Application.class, args);}/*** @LoadBalanced 配置负载均衡实现RestTemplate* @return*/@Bean@LoadBalancedRestTemplate restTemplate() {return new RestTemplate();}
}
4、创建controller
@RestController
@Slf4j
public class Trace1Controller {@AutowiredRestTemplate restTemplate;@RequestMapping(value = "trace1",method = RequestMethod.GET)public String trace1(){log.info("===call trace-1=====");return restTemplate.getForEntity("http://trace-2/trace2",String.class).getBody();}
}
在完成上述案例后,我们来进行测试,分别开启注册中心、trace-1、trace-2服务.我们对trace-1发送请求 http://localhost:5000/trace1
trace-1微服务的控制台
trace-2微服务的控制台