首页 > 其他分享 >spring cloud面试题

spring cloud面试题

时间:2024-08-15 11:04:36浏览次数:13  
标签:面试题 服务 Hystrix Netflix spring Feign Cloud Spring cloud

什么是 Spring Cloud?

Spring Cloud是一个微服务框架,‌它提供了全套的分布式系统解决方案。

使用 Spring Cloud 有什么优势

将单体服务拆分所带来的问题:

- 服务实例太多怎么办

- 服务调用关系太杂乱怎么办

- 服务访问出错了怎么办

- 配置信息散落在各个服务中怎么办

- 服务调用链路太长怎么办

等等会带来一系列的问题。

使用spring cloud提供的一些组件。

*微服务* *Spring Cloud与Netflix OSS*
配置管理 Spring Config Server
服务发现 Spring Cloud Netflix Eureka
负载平衡 Spring Cloud Netflix Ribbon
API网关 Spring Cloud Zuul
API网关 Spring Cloud Gateway
安全问题 Spring Cloud Security
集中化日志记录 自建ELK
集中的度量 Spring Spectator & Atlas
分布式跟踪 Spring Cloud Sleuth
弹性和容错性 Netflix Hystrix, Netflix Turbine, & Netflix Ribbon
自动伸缩和自我修复 -
打包、部署和调度。 Apache Maven. Spring Cloud没有真正的调度程序。
作业管理 Spring Batch
单例应用程序。 Spring Cloud Cluster

服务注册和发现是什么意思?Spring Cloud 如何实现?

服务注册:它指的是将服务实例的信息注册到服务注册中心。实例的信息一般包括ip地址、端口号、注册时间等信息。

服务发现:通过服务注册中心来查询和发现可用的服务实例。一般是获取可用目标服务的IP地址、端口号等信息列表,通过负载均衡的方式进行服务的调用。

spring cloud通过eureka来实现服务注册和发现。Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找。

spring cloud怎样实现负载均衡?

我们可以使用spring cloud提供的ribbon组件来实现负载均衡。

什么是 Hystrix?它如何实现容错?

Hystrix是Netflix开源的一个库,用于在分布式系统中实现容错性。它主要用于处理分布式系统中的服务间依赖关系,以确保系统在面对依赖故障或高负载时能够继续提供有限的功能而不完全崩溃。Hystrix通过提供以下功能来实现容错:

1.降级(Fallback)
  当一个依赖的服务发生故障或超时时,Hystrix可以提供一个备用的、降级的响应,而不是返回错误或抛出异常或者让客户端一直在那里等待。这有助于保持系统的一部分功能继续可用,而不会因依赖服务的问题而受到影响。说白了就是在对应的业务方法上添加相应的注解,并指定fallback方法在出现问题的时候进行回调。

2.熔断(Circuit Breaker)
  Hystrix引入了熔断器的概念,类似于电路中的熔断器。如果某个依赖的故障率超过了一定的阈值,Hystrix会打开熔断器,暂时阻止对该依赖的请求,以减轻负载和避免连锁故障。在一段时间后,熔断器会尝试半开状态,允许一部分请求通过,如果成功,就继续关闭熔断器,否则保持打开。

3.资源隔离(Thread Pooling and Request Batching)
  Hystrix允许为不同的依赖服务配置独立的线程池,以确保某个依赖服务的问题不会影响到整个系统的线程资源。此外,Hystrix还支持请求批处理,可以将多个请求合并为一个,减少对依赖服务的负载。

4.实时监控和度量
  Hystrix提供了实时监控和度量功能,可以通过仪表盘查看依赖服务的性能指标,如请求成功率、失败率、响应时间等。这有助于运维人员及时发现和解决问题。

5.自动恢复
  一旦依赖服务的故障率降低到可接受水平,Hystrix会自动恢复对该服务的正常请求处理,不再触发熔断机制。

6.超时处理
  Hystrix可以配置每个依赖服务的超时时间,如果请求超时,它会被视为失败,并根据熔断策略进行处理。

  总的来说,Hystrix通过熔断、降级、资源隔离等策略,以及实时监控和度量来实现容错。它允许开发者在分布式系统中更好地处理依赖服务的故障,提高系统的可用性和稳定性。然而,需要注意的是,Hystrix在Netflix的官方GitHub仓库中已经宣布停止维护,推荐使用更先进的容错和断路器库,如Resilience4j或Sentinel。

什么是 Hystrix 断路器?我们需要它吗?

和上面的回答保持一致就可以了。

什么是 Netflix Feign?它的优点是什么?

Feign是Netflix开发的一个基于注解的轻量级HTTP客户端,它使得编写服务间的HTTP通信变得更加简单和优雅。

Netflix Feign具有以下几个优势:

声明式API:Feign允许开发人员通过接口和注解定义服务间的API调用。通过简单的接口定义,Feign可以自动生成调用目标服务的HTTP请求,使得服务间的通信定义更加清晰和易于理解。

集成负载均衡:Feign内部集成了Ribbon负载均衡器,可以通过配置和注解实现对多个服务提供实例的负载均衡。开发人员不需要手动处理服务实例的选择,Feign会自动根据负载均衡策略选择并调用合适的服务实例。

整合容错处理:Feign还集成了Hystrix容错处理框架,可以通过注解和配置实现服务调用的容错机制。当目标服务发生故障或响应超时时,Feign可以根据配置进行熔断、降级或重试等操作,提高了系统的可靠性和稳定性。

简化HTTP通信:Feign封装了底层的HTTP通信细节,开发人员只需要关注业务逻辑,无需手动处理HTTP请求和响应。Feign提供了丰富的注解,使得开发人员可以方便地定义请求的URL、方法、参数、Header等信息,大大简化了HTTP通信的编写和管理。

可扩展性:Feign提供了扩展点,开发人员可以通过自定义注解、解码器、编码器等来扩展和定制Feign的功能。这使得Feign可以适应各种业务场景和需求,提供更灵活和定制化的解决方案。

综上所述,Netflix Feign的优势在于简化了服务间的HTTP通信,提供了声明式API和集成了负载均衡和容错处理,可以大大简化和优化服务调用的编写和管理。

什么是 Spring Cloud Bus?我们需要它吗?

我们将微服务中的配置文件集中存储在远程Git仓库,并且通过配置中心微服务从Git仓库拉取配置文件,当用户微服务启动时会连接配置中心获取配置信息从而启动用户微服务。
如果我们更新Git仓库中的配置文件,那用户微服务是否可以及时接收到新的配置信息并更新呢?答案是不会。

Spring Cloud Bus 是 Spring Cloud 中一个用于服务之间通信的组件。它基于消息中间件实现,可以实现配置的动态刷新和事件的广播通知,提高配置的实时性和可靠性。

因为要想要服务的调用实时知道你的配置信息发生变化,说白了,你还是需要手动执行命令去获取git仓库中的配置的。使用命令:curl -X POST http://localhost:8080/actuator/bus-refresh。所以在实际生产环境中使用的比较少。

标签:面试题,服务,Hystrix,Netflix,spring,Feign,Cloud,Spring,cloud
From: https://www.cnblogs.com/dongyaotou/p/18360507

相关文章

  • 自动化测试常考的面试题+答案
    目录1、apache和nginx的区别?2、平常用什么工具测接口的?3、没有接口文档,如何做接口测试?4、在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?5、依赖于第三方数据的接口如何进行测试?6、你平常做接口测试的过程中发现过哪些bug?7、如何分析一个bug......
  • 基于SpringBoot+MySQL+SSM+Vue.js的药房药品采购系统(附论文)
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基于SpringBoot+MySQL+SSM+Vue.js的药房药品采购系统(附论文......
  • 基于SpringBoot+MySQL+SSM+Vue.js的旅游咨询系统
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基于SpringBoot+MySQL+SSM+Vue.js的旅游咨询系统,用户,管理......
  • MemFire Cloud,前端开发新纪元
    在前端开发的世界里,每年都会涌现出各种各样的新技术和工具,但真正能够改变游戏规则的却寥寥无几。而MemFireCloud,就是这样一款能够引领前端开发新纪元的工具。一站式开发神器,懒人的福音对于开发者来说,最烦人的事情莫过于不断地搭建服务、配置环境和开发接口API。这些繁琐......
  • [NSSCTF 2022 Spring Recruit]ezgame
    首先查看本题描述:js分析,源码泄露,信息收集,大致了解了题的解法方向,进入题目页面查看一下,是一个射击游戏,查看源码发现要获得65分才能拿到成绩,一般来说这种游戏基本不可能拿到给定的分数,通常是对源码进行分析然后用bp抓包改包以此来进行分数获得。 结合前面题解的描述,我们先对js文......
  • Springboot项目中的VO包
    在SpringBoot项目中,VO(ValueObject)是一个非常重要的概念。VO代表值对象,它用于封装业务逻辑中的数据,并且在应用程序的不同层之间进行传递。VO在SpringBoot项目中起到了很多重要的作用,下面我们来详细讲解一下。数据封装:VO用于封装业务逻辑中的数据。在一个典型的SpringBoo......
  • 轻松解析高频面试题: 线程设置数量多少合适?带你面试乱杀
    目录一、前言二、线程数和CPU利用率的小测试三、插入io操作四、线程数和CPU利用率总结五、线程数规划的公式 六、真实程序中的线程数一、前言相信很多小伙伴在刷面试题的时候都看到过一个线程数设置的理论:CPU密集型的程序-核心数+1I/O密集型的程序-核心数......
  • Spring Boot的配置文件管理技巧
    SpringBoot的配置文件管理技巧大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!SpringBoot的配置文件管理是实现不同环境配置和快速部署的关键。SpringBoot提供了多种方式来管理配置文件,以下是一些有效的管理技巧。1.配置文件的命名SpringBoot......
  • Spring Boot集成Spring Data JPA进行数据库操作
    SpringBoot集成SpringDataJPA进行数据库操作大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!SpringDataJPA是一个用于简化数据库操作的ORM(对象关系映射)框架,它提供了一套统一的API来访问数据库,而无需编写大量的JDBC代码。SpringBoot与SpringDat......
  • Spring Boot应用的性能监控与优化
    SpringBoot应用的性能监控与优化大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!性能监控与优化是确保SpringBoot应用高效运行的关键。SpringBoot提供了多种工具和机制来帮助开发者监控应用性能并进行优化。1.应用性能指标SpringBootActuator......