springcloud对于公司来说就是一种福音,使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本,可见springcloud的重要性,大家面试java的时候,springcloud相关问题是必问的,那springcloud组件面试题有哪些?下面来我们就来给大家讲解一下。
1.什么是Hystrix断路器?我们需要它吗?
由于某些原因,employee-consumer公开服务会引发异常。在这种情况下使用Hystrix我们定义了一个回退方法。如果在公开服务中发生异常,则回退方法返回一些默认值。
如果firstPage method() 中的异常继续发生,则Hystrix电路将中断,并且员工使用者将一起跳过firtsPage方法,并直接调用回退方法。断路器的目的是给第一页方法或第一页方法可能调用的其他方法留出时间,并导致异常恢复。可能发生的情况是,在负载较小的情况下,导致异常的问题有更好的恢复机会 。
2.Spring Cloud 的核心组件有哪些?
Eureka:服务注册于发现。Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。
3.了解Eureka自我保护机制吗?
当Eureka Server 节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁启动关闭客户端)节点会进入自我保护模式,保护注册信息,不再删除注册数据,故障恢复时,自动退出自我保护模式。
4.Spring Cloud如何实现服务的注册?
服务发布时,指定对应的服务名,将服务注册到 注册中心(Eureka 、Zookeeper)。
注册中心加@EnableEurekaServer,服务用@EnableDiscoveryClient,然后用ribbon或feign进行服务直接的调用发现。
5.Feign主要负责什么?
Feign主要负责与其他服务建立连接,构造请求,发起请求,获取响应等等,用来远程调用其他的服务;
Feign使用Jdk的动态代理来针对FeignClient注解修饰的接口创建动态代理;
调用FeignClient注解修饰的接口,实际是调用Feign创建出来的动态代理;
根据RequestMapping等注解信息,动态构造出要请求的服务地址;
针对该构造出来的地址,发起请求,解析响应;
6.Ribbon和Feign的区别?
(1)Ribbon都是调用其他服务的,但方式不同。
(2)启动类注解不同,Ribbon是@RibbonClient feign的是@EnableFeignClients
(3)服务指定的位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。
(4)调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign需要将调用的方法定义成抽象方法即可。
其实springcloud组件面试题无非就是围绕几大核心组件知识点,作为程序员,我们需要了解springcloud核心组件使用方法以及使用原理,这样在面试中也就不会害怕啦!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: