35道 Spring Cloud 经典面试题,看完轻松拿offer~_springcloud面试题
目录
1、什么是 Spring Cloud?
2、使用 Spring Cloud 有什么优势?
3、服务注册和发现 Spring Cloud如何实现?
4、负载平衡的意义什么?
5、什么是 Hystrix?它如何实现容错?
6、什么是 Hystrix 断路器?能解决什么问题?
7、什么是 Netflix Feign?它的优点是什么?
8、什么是 Spring Cloud Bus?有哪些适用场景?
9、什么是微服务?
10、什么是服务熔断?什么是服务降级?
11、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
12、Spring Boot和Spring Cloud的区别?
13、分布式事务框架你知道有哪些吗?
14、说说 RPC 的实现原理
15、微服务的优点缺点?说下开发项目中遇到的坑?
16、spring cloud 和dbbo区别?
17、REST 和RPC对比
18、你所知道的微服务技术栈?
19、微服务之间是如何独立通讯的?
20、springcloud如何实现服务的注册?
21、Eureka和Zookeeper区别
22、Eureka自我保护机制是什么?
23、什么是Ribbon?
24、Spring Cloud的常见组件?
25、Ribbon和Feign的区别?
26、全链路追踪有什么用?
27、在Gateway中怎样实现服务平滑迁移?
28、Spring Cloud Gateway?
29、作为务注册中心,Eureka比Zookeeper好在哪里?
30、什么是 Ribbon负载均衡?
31、Ribbon负载均衡能干什么?
32、什么是 Zuul路由网关
33、分布式配置中心能干什么?
34、什么是CAP原则?
35、请描述一下Spring Cloud Sleuth的主要功能?
1、什么是 Spring Cloud?
答:Spring cloud 流应用程序启动器是 于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。
2、使用 Spring Cloud 有什么优势?
答:使用Spring Boot开发分布式微服务时,我们面临以下问题 :
1. 与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
2. 服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该 目录中注册服务,然后能够查找并连接到该目录中的服务。
3. 冗余-分布式系统中的冗余问题。
4. 负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央 处理单元,或磁盘驱动器的分布。
5.性能-问题 由于各种运营开销导致的性能问题。
6. 部署复杂性-Devops技能的要求。
3、服务注册和发现 Spring Cloud如何实现?
答:当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。Eureka
服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。
4、负载平衡的意义什么?
答:在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
5、什么是 Hystrix?它如何实现容错?
答:Hystrix 是一个用于处理分布式系统延迟和容错的开源库,它提供了线程隔离、断路器等功能,可以帮助开发者在微服务架构中实现容错。Hystrix 主要是用 Java 语言编写的,但也可以在其他 JVM 语言中使用。
Hystrix 实现容错方式:
(一)监控服务调用
-
指标收集:Hystrix 会收集服务调用的各种指标,如请求数量、成功数量、失败数量、超时数量等。这些指标可以帮助开发者了解服务的运行情况,及时发现问题。
-
实时监控:通过实时监控这些指标,Hystrix 可以在服务出现问题时及时采取措施,如打开断路器、进行降级处理等。
(二)快速失败
-
原理:当一个服务出现故障时,Hystrix 会立即返回失败,而不是等待超时。这样可以避免客户端长时间等待,提高系统的响应速度。
-
好处:快速失败可以减少故障对系统的影响,同时也可以让客户端更快地尝试其他的服务或者采取其他的措施。
(三)降级处理
-
自动降级:当一个服务不可用时,Hystrix 会自动执行降级处理,返回一个预设的默认值或者执行一个备用的逻辑。
-
人工降级:开发者也可以根据实际情况手动触发降级处理,例如在系统维护期间或者出现重大故障时。
(四)恢复服务调用
-
断路器状态转换:当服务的错误率下降到一定阈值以下时,Hystrix 会自动尝试恢复服务的调用。断路器会从打开状态转换为半打开状态,此时会允许部分请求通过,如果这些请求成功,断路器会关闭,恢复正常的服务调用。
-
健康检查:Hystrix 还可以通过健康检查机制来判断服务是否已经恢复正常。例如,可以定期发送一些测试请求来检查服务的可用性。
6、什么是 Hystrix 断路器?能解决什么问题?
答:Hystrix 是 SpringCloud提供的用于容错机制、和故障保护功能的组件,它提供了多种功能来帮助构建健壮的分布式系统。
Hystrix,主要解决4个问题:
-
隔离(Isolation):通过隔离服务之间的调用,防止故障在整个系统中传播,提高系统的稳定性和可用性。
-
容错(Fault Tolerance):通过降级、断路器等机制,处理外部服务调用的故障,保证系统的可靠性。
-
降级(Fallback):在外部服务不可用或请求超时时,提供备用的功能或数据,保证系统的正常运行。
-
实时监控(Real-time Monitoring):提供实时监控和指标统计功能,帮助了解系统的运行状况,及时发现和解决问题。
7、什么是 Netflix Feign?它的优点是什么?
答:Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序。Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其稳定性。在 employee-consumer 的例子中,我们使用了 emplo e-producer 使用 REST模板公开的 REST 服务。
但是我们必须编写大量代码才能执行以下步骤
1、使用功能区进行负载平衡。
2、获取服务实例,然后获取基本 URL。
3、利用 REST 模板来使用服务。前面的代码如下
@Controllerpublic class ConsumerControllerClient { @Autowired private LoadBalancerClient loadBalancer; public void getEmployee() throws RestClientException, IOException { ServiceInstance serviceInstance=loadBalancer.choose(\"employee-producer\"); System.out.println(serviceInstance.getUri()); String baseUrl=serviceInstance.getUri().toString(); baseUrl=baseUrl+\"/employee\"; RestTemplate restTemplate = new RestTemplate(); ResponseEntity response=null; try{ response=restTemplate.exchange(baseUrl, HttpMethod.GET, getHeaders(),String.class); }catch (Exception ex){ System.out.println(ex); } System.out.println(response.getBody()); }}
之前的代码,有像 NullPointer 这样的例外的机会,并不是最优 。我们将看到如何使用 Netflix Fe n使呼叫变得更加轻松和清洁。如果 Netflix Ribbon 依赖关系 径中,那么 Feign 默认也会负载平衡。
8、什么是 Spring Cloud Bus?有哪些适用场景?
答:Spring Cloud Bus 是 Spring Cloud 中的一个消息总线,它用于在分布式系统中传播状态变化。简单来说,它可以将一个服务的状态变化通知到其他服务,从而实现服务之间的同步和协调。
Spring Cloud Bus 基于消息代理(如 RabbitMQ、Kafka 等)来实现消息的传递。当一个服务发生状态变化时,它可以向消息总线发送一个消息。其他服务订阅了这个消息总线,就可以接收到这个状态变化的通知,并做出相应的反应。
适用场景:
1.大型分布式系统:在大型分布式系统中,服务之间的通信和协调非常复杂,Spring Cloud Bus 可以提供一种有效的解决方案,帮助我们实现服务间的状态同步、配置刷新和事件通知等功能。
2.频繁变化的配置:如果系统中的配置经常变化,需要实现配置的动态刷新,那么 Spring Cloud Bus 是一个非常好的选择。
3.需要实时通知的场景:在一些需要实时通知的场景中,如服务上线、下线或者发生故障时,Spring Cloud Bus 可以快速地将这些事件通知到其他相关的服务,以便它们做出相应的调整。
9、什么是微服务?
答:微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分为一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API),每个服务都围绕着具体的业务进行构建,并且能够被独立的构建在生产环境、类生产环境等。另外,应避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。
10、什么是服务熔断?什么是服务降级?
答:熔断机制是应对雪崩效应的一种微服务链路保护机制。当某个微服务不可用或者响应时间太长时,会进行服务降级,进而熔断该节点微服务的调用,快速返回“错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现,Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内调用20次,如果失败,就会启动熔断机制。
服务降级,一般是从整体负荷考虑。就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的fallback回调,返回一个缺省值。这样做,虽然水平下降,但好歹可用,比直接挂掉强。
11、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
答:Zookeeper保证了CP(C:一致性,P:分区容错性),Eureka保证了AP(A:高可用)
1.当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用。也就是说,服务注册功能对高可用性要求比较高,但zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新选leader。问题在于,选取leader时间过长,30 ~120s,且选取期间zk集群都不可用,这样就会导致选取期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务能够恢复,但是漫长的选取时间导致的注册长期不可用是不能容忍的。
2.Eureka保证 用性,Eureka各个节点是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点仍然可以提供注册和查询服务。而Eureka的客户端向某个Eureka注册或发现时发生连接失败,则会自动切换到其他节点,只要有一台Eureka还在,就能保证注册服务可用,只是查到的信息可能不是最新的。除此之外,Eureka还有自我保护机制,如果在15分钟内超过85%的节点没有正常的心跳,那么Eureka就认为客户端与注册中心发生了网络故障,此时会出现以下几种情况:
① Eureka不在从注册列表中移除因为长时间没有收到心跳而应该过期的服务。
② Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上(即保证当前节点仍然可用)
③ 当网络稳定时,当前实例新的注册信息会被同步到其他节点。因此,Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像Zookeeper那样使整个微服务瘫痪。
12、Spring Boot和Spring Cloud的区别?
答:Spring Boot专注于快速方便的开发单个个体微服务。
Spring Cloud是关注全局的微服务协调整理治理框架,它将Spring Boot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务Spring Boot可以离开Spring Cloud独立使用开发项目, 但是Spring Cloud离不开Spring Boot ,属于依赖的关系.
Spring Boot专注于快速、方便的开发单个微服务个体,Spring Cloud关注全局的 治理框架。
13、分布式事务框架你知道有哪些吗?
答:Seata框架:是一款开源的分布式事务解决方案,主要应用于微服务架构中。Seata框架的主要角色包括事务协调者(TC)、事务管理器(TM)和资源管理器(RM)。
GTS框架:是一款由阿里巴巴中间件部门研发的分布式事务中间件,可以为微服务架构中的分布式事务提供一站式解决方案。
14、说说 RPC 的实现原理
答:首先需要有处理网络连接通讯的模块,负责连接建立、管理和消息的传输。其次需要有编解码的模块,因为网络通讯都是传输的字节码,需要将我们使用的对象序列化和反序列化。剩下的就是客户端和服务器端的部分,服务器端暴露要开放的服务接口,客户调用服务接口的一个代理实现,这个代理实现负责收集数据、编码并传输给服务器然后等待结果返回。
15、微服务的优点缺点?说下开发项目中遇到的坑?
答: 优点:
(1)每个服务直接足够内聚,代码容易理解
(2)开发效率高,一个服务只做一件事,适合小团队开发
(3)松耦合,有功能意义的服务。
(4)可以用不同语言开发,面向接口编程。
(5)易于第三方集成
(6)微服务只是业务逻辑的代码,不会和HTML,CSS或其他界
(7)可以灵活搭配,连接公共库/连接独立库
缺点:
(1)分布式系统的责任性
(2)多服务运维难度加大。
(3)系统部署依赖,服务间通信成本,数据一致 ,系统集成测试,性能监控。
16、spring cloud 和dbbo区别?
答:1.服务调用方式 dubbo是RPC spri cloud Rest Api
2.注册中心,dubbo 是zookeep r springcloud是eureka,也可以是zookeeper
3.服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文 的更新与服务自动装配等等一系列的微服务架构要素。
17、REST 和RPC对比
答:1.RPC主要的缺陷是服务提供方和调用方式之间的依赖太强,需要对每一个微服务进行接口的定义,并通过持续继承发布,严格版本控制才不会出现冲突。
2.REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合,只需要一个约定进行规范。
18、你所知道的微服务技术栈?
答:1.维度(Spring Cloud
)
2.服务开发:Spring Boot
Spring
Spring MVC
3.服务配置与管理:Netfix公司的Archaiusm ,阿里的Diamond
4.服务注册与发现:Eureka
,Zookeeper
5.服务调用:Rest RPC gRpc
6.服务熔断器:Hystrix
7.服务负载均衡:Ribbon Nginx
8.服务接口调用:Fegin
9.消息队列:Kafka Rabbitmq activemq
10.服务配置中心管理:SpringCloudConfig
11.服务路由(API网关)Zuul
12.事件消息总线:SpringCloud Bus
19、微服务之间是如何独立通讯的?
答:1.远程调用,比如feign调用,直接通过远程过程调用来访问别的service。
2.消息中间件
20、springcloud如何实现服务的注册?
答:1.服务发布时,指定对应的服务名,将服务注册到 注册中心(eureka zookeeper)
2.注册中心加@EnableEurekaServer,服务用@EnableDiscoveryClient,然后用ribbon或feign进行服务直接的调用发现。
21、Eureka和Zookeeper区别
答:1.Eureka取CAP的AP,注重可用性,Zookeeper取CAP的CP注重一致性。
2.Zookeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但选举期间不可用。
3.eureka的自我保护机制,会导致一个结果就是不会再从注册列表移除因长时间没收到心跳而过期的服务。依然能接受新服务的注册和查询请求,但不会被同步到其他节点。不会服务瘫痪。
4.Zookeeper有Leader和Follower角色,Eureka各个节点平等。
5.Zookeeper采用过半数存活原则, reka采用自我保护机制解决分区 。
6.eureka本质是一个工程,Zookeeper只是一个进程。
22、Eureka自我保护机制是什么?
答:当Eureka Server 点在短时间内丢失了过多实例的连接时(比如网络故障或频繁启动关闭客户端)节点会进入自我保护模式,保护注册信息,不再删除注册数据,故障恢复时,自动退出自我保护模式。
23、什么是Ribbon?
答:ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。feign默认集成了ribbon。
24、Spring Cloud的常见组件?
答:Springcloud 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。
Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
Feign:基于Ribbon和Hystrix的声明式服务调用组件;
Zuul:API网关组件,对请求提供路由及过滤功能。
25、Ribbon和Feign的区别?
答:1.二者调用方式不同
Ribbon添加maven依赖 spring-starter-ribbon 使用@RibbonClient(value=“服务名称”) Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐;feign添加maven依赖 spring-starter-feign 服务提供方提供对外接口 调用方使用 在接口上使用@FeignClient(“指定服务名”)Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可, 不需要自己构建http请求,不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。
2.启动类使用的注解不同
Ribbon用的是@RibbonClient; Feign用的是@EnableFeignClients。
3.服务的指定位置不同
Ribbon是在@RibbonClient注解上声明;Feign则是在定义抽象方法的接口中使用@FeignClient声明。
26、全链路追踪有什么用?
答:在分布式系统中,由于服务单元数量众多,一个请求可能需要调用多个服务,而内部服务之间也互相调用,如果程序出现了错误或异常,出现问题就难以定位到是哪个环节出现了故障。所以微服务架构中,必须实现分布式链路追踪, 通俗地讲就是追踪一个请求到底有哪些服务参与,他们的调用顺序,是否执行成功,还有执行时间这些东西,服务在哪台机器上的一些信息。都可以通过链路追踪进行获取。从而达到每个请求的步骤清晰可见,出了问题,很快定位。
27、在Gateway中怎样实现服务平滑迁移?
答:可以使用Weight路由的断言工厂进行服务权重的配置,并将配置放到Nacos配置中心进行动态迁移。
Weight路由断言工厂:该断言工厂中包含两个参数,分别是用于表示组 group,与权重 weight。对于同一组中的多个 uri 地址,路由器会根据设置的权重,按比例将请求转发给相应的 uri。实现负载均衡。
spring: cloud: gateway: routes: - id: weight_high uri: https://weighthigh.org predicates: - Weight=group1, 8 - id: weight_low uri: https://weightlow.org predicates: - Weight=group1, 2
28、Spring Cloud Gateway?
答:Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。
使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改。
29、作为务注册中心,Eureka比Zookeeper好在哪里?
答:1.Eureka保证的是可用性和分区容错性,Zookeeper 保证的是一致性和分区容错性 。
2.Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障。而不会像zookeeper那样使整个注册服务瘫痪。
30、什么是 Ribbon负载均衡?
答:1.Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。
2.Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。
31、Ribbon负载均衡能干什么?
答:1.将用户的请求平摊的分配到多个服务上
2.集中式LB即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;
3.进程内LB将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。
注意:Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方 它来获取到服务提供方的地址。
32、什么是 Zuul路由网关
答:1.Zuul 包含了对请求的路由和过滤两个最主要的功能:其中 责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负 请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础、
2.Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
注意:Zuul服务最终还是会注册进Eureka 提供=代理+路由+过滤 三大功能
33、分布式配置中心能干什么?
答:1.集中管理配置文件不同环境不同配置,动态化的配置更新,分环境部署比如
dev/test/prod/beta/release
2.运行期间动态调整 置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息
3.当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置将配置信息以REST接口的形式暴露
34、什么是CAP原则?
答:CAP 原则是 Consistency(一致性)、Availablity(可用性)和 Partition-tolerance(分区容错性)的缩写,它是分布式系统中的平衡理论。在分布式系统中,一致性要求所有节点每次读操作都能保证获取到最新数据;可用性要求无论任何故障产生后都能保证服务仍然可用;分区容错性要求被分区的节点可以正常对外提供服务。事实上,任何系统只可同时满足其中二个,无法三者兼顾。对于分布式系统而言,分区容错性是一个最基本的要求。那么,如果选择了一致性和分区容错性,放弃可用性,那么网络问题会导致系统不可用。如果选择可用性和分区容错性,放弃一致性,不同的节点之间的数据不能及时同步数据而导致数据的不一致。
35、请描述一下Spring Cloud Sleuth的主要功能?
答:Spring Cloud Sleuth是一个用于在Spring Cloud应用程序中实现分布式跟踪的工具。它的主要功能是帮助开发人员监控和分析在微服务架构中的请求流和事件流,以便更好地理解和优化系统的行为。
主要功能:
1.分布式跟踪:Spring Cloud Sleuth通过在应用程序中添加跟踪标识符(如trace ID和span ID)来跟踪请求在微服务之间的传播路径。这使得开发人员能够跨多个服务实例和组件跟踪请求的生命周期,从而更好地理解请求的处理过程。
2.集成常见的分布式跟踪系统:Spring Cloud Sleuth支持与常见的分布式跟踪系统集成,如Zipkin、Jaeger和Prometheus等。这使得开发人员可以利用这些系统的功能和界面来收集、存储、分析和可视化跟踪数据,从而更方便地进行监控和调试。
3.自定义跟踪数据:除了默认的跟踪标识符,Spring Cloud Sleuth还允许开发人员自定义跟踪数据,如添加自定义的标签(tags)和注解(annotations)。这使得开发人员能够根据业务需求提供更丰富的上下文信息,更好地理解和分析问题。
4.跨不同的通信协议:Spring Cloud Sleuth支持跨不同的通信协议进行分布式跟踪,如HTTP、gRPC、Kafka等。这意味着无论微服务之间使用何种通信方式,都可以进行一致的跟踪和分析。
5.自动化集成:Spring Cloud Sleuth与Spring Cloud的其他组件和工具无缝集成,如Feign、Ribbon、Zuul等。这使得在Spring Cloud应用程序中实现分布式跟踪变得更加简单和方便。
6.可扩展性:Spring Cloud Sleuth的设计具有良好的可扩展性,可以根据需要进行定制和扩展。开发人员可以根据自己的需求实现自定义的跟踪逻辑和集成其他跟踪系统。