SpringBoot和SpringCloud面试题

**

@SpringBoot和SpringCloud面试题

**

什么是SpringBoot?

1,SpringBoot是用来简化Spring初始话搭建的。
2,SpringBoot可以创建spring引用程序main发放运行。
3,嵌入Tomcat无需部署war包,可以直接打成jar包,利用Cmd指令java -jar -项目名称 启动就好。
4,简化了maven的配置。
5,自动装配spring添加对应的starter自动化配置


springBoot常用的starter有哪些?

1,spring-boot-starter-web(嵌入Tomcat和web开发需要的servelet和jsp的支持)。
2,spring-boot-starter-data-jpa(数据库支持)。
3,spring-boot-starter-data-redis(redis支持)。
4,spring-boot-starter-data-solr(solr搜索引擎框架支持)。
5,mybatis-spring-boot-starter(第三方mybatis集成starter)。

Springboot自动装配原理你理解嘛?

1, 在启动类上加上@SpringBootApplication和@EnableAutoConfiguration。
2, @EnableAutoConfiguration这个注解会根据你添加的jar依赖,会自动去maven中读取每个starter中的
spring.factories文件,该文件里配置了所有需要被创建spring容器中的bean。

springBoot工作原理?

1,SpringBoot在启动时扫描项目依赖的jar包,寻找包含Spring.factories文件的jar。
2,根据spring.factories配置加载AutoConfigure。
3,根据@conditional注解的条件,进行自动配置并将bean注入spring Context。

SpringBoot的优点说一下?

1,减少开发。
2,使用javaConfig有助于避免XML配置文件
3,避免大量的maven导入和各种版本冲突等。

讲一下什么是SpringCloud?

SpringCloud是一系列框架的有序集合,SpringCloud是一套完整的微服务解决方案,基于SpringBoot框架,准确的说他不是一个框架,而是一个大的容器,将市面上比较好的微服务框架集成进来,提供了一整套的解决方案。比如服务注册与发现,服务消费,服务保护于熔断,网关等。

SpringCloud断路器的作用是什么?

在分布式架构中,断路器的模式的作用就是当某个服务单元发生故障之后,通过断路器的故障监控,像调用方返回一个错误响应,而不是长时间的等待。

SpringCloud的核心组件有哪些?

1,Eureka:
服务注册与发现,就是把自己的微服务注册进去,等待别人调用。
Eureka的自我保护机制
Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,比如网络故障,Eureka Server 会将这些实例保护起来,不在删除注册数据,故障恢复时,自动退出自我保护模式。
2,Feign:

基于动态代理机制,根据注解和选择的机器,拼接请求url地址,发送请求。
优点:
1,Fegin采用的是基于接口的注解
2,Fegin整合Ribbon,具有负载均衡的能力
3,整合了Hystrix,具有熔断的能力
使用方式:
1,添加pom依赖
2,启动类添加@EnableFeignClients
3,定义一个接口@FeignClient(name=“xxxx”)指定调用那个服务
Ribbon:
实现负载均衡,从一个服务的多台机器中选择一台。
Ribbon和Feign的区别?
1,他们两个都是调用其他服务的,但是方式不同。
2,启动类上注解不同。
3,调用方式不同是指Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,而
Feign只需要将调用的方法定义成抽象方法就行。
Hystrix:
是一个开源的延迟和容错库,用于隔离访问远程服务,第三方库,防止出现级联失败。Hystrix熔断机制,用于监控微服务调用情况,当失败的情况达到预定的阈值(5秒20次)会打开断路器,拒绝所有请求,直到服务恢复正常。(使用@HystrixCommand(黑丝翠克斯肯满特)注解配置降级方法,在启动类上加上@EnableCircuitBreaker。
Gateway和zuul:
gateway是spring官网基于spring5.0,SpringBoot2.0等技术开发的服务网关。他的核心功能就是过滤和路由设置。由gatway网关转发请求给对应的服务。(Spring Cloud Gateway组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务。Spring Cloud Gateway本身也是一个微服务,需要注册到
Eureka服务注册中心)。
Config :
config是一个分布式配置中心,config的好处就是集中管理配置文件,不同环境不同配置。动态化的配置跟新。配置中心本质上也是一个微服务,同样需要注册到Eureka注册中心。
RabbitMQ和kafka:
rabbitmq采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费者并不需要确保提供方存在,实现了服务之间的高度解耦。
如何确保消息正确的发送至Rabbitmq?如何确保消息接受方消费了消息
发送方确认模式:
将信道设置成confirm确认模式,一旦消息被投递到目的队列后,信道会发送一个确定给生产者。如果发送失败会发送一个未确认的消息。
将信道设置为return退回模式,一旦消息投递失败则会返回一个returnCallback。
接收方确认机制ACK:
消费者每接收到一条消息后都必须进行确认,只有确认了消息rabbitmq才会安全的把消息从队列中删除。
有三种确认方式:
自动确认:acknowledge=“none” 默认的方式
手动确认:acknowledge=“manual”
根据异常情况确认:acknowledge=“auto”

kafka:
kafka是一个高吞吐量的分布式发布订阅消息系统
优势:
快速:单一的kafka代理可以处理成千上万的客户端。
可伸缩:在一组机器上对数据进行分区和简化,用来支持更大的数据。
持久:消息是持久性的,并在集群中进行复制,以防止数据丢失。
kafka怎么保证消息可靠性:
我们可以在定义Producer 时通过Acks参数指定。参数支持三种值。
1,acks=0,意味着如果生产者能够通过网络把消息发送出去,那麽就认为消息已成功写入kafka,不过这种模式一定会丢失一些消息,但是可以得到大量的吞吐量。
2,acks=1,意味这leader在收到消息并把它写入分区数据文件时会返回确认或者错误响应,但是这种模式仍然有可能丢失数据,比如消息已成功写入Leader,但在消息被复制到副本之前Leader发生崩溃。
3,acks=all,代表leader在返回确认和错误响应之前,会等待所有同步副本都收到消息。不过这也是最慢的做法,因为生产者再继续发送其他消息之前需要等待所有副本都收到当前的消息。

我们可以根据实际的应用场景来设置不同的acks,以保证数据的可靠性。

RabbitMQ和kafka的区别:
rabbitmq在吞吐方面稍逊于kafka,但是rabbitmq支持对消息的可靠性的传递,支持事务。

spring和springboot和springcloud区别

1,Spring是一个轻量级的IOC和AOP容器框架,是为Java应用程序提供基础性服务的一套框架
2,springBoot是spring的一个脚手架,基于spring,多了一些默认配置,能快速开发单个微服务。
3,SpringCloud是一套完整的微服务解决方案,基于SpringBoot框架。
4,Springboot专注于快速,方便集成的单个个体,而Springcloud是关注于全局的服务治理框架。
5,Springboot使用了默认大于配置的理念,很多集成方案已经选择好了,能不配置就不配置。

SpringCloud和Dubbo的区别

1,SpringCloud和Dubbo都是现在主流的微服务架构
2,SpringCloud是Apache旗下的Spring体系下的微服务解决方案。
3,Dubbo是阿里系的分布式服务治理框架。

Rest和RPC的区别:
1,RPC最主要的缺陷就是服务提供方和调用方式之间依赖性太强,他们之间必须需要为每一个微服务进行接口的定义,需要沿河的版本控制,才不会出现服务提供方和调用之间因为版本不同而产生的冲突。

2,而Rest是轻量级的接口,服务的提供和调用不存在代码之间的耦合,只是通过一个约定的规范。但是也有可能出现文
档和接口不一致而导致的服务集成问题,但是可以通过swagger工具整合。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值