Java架构师面试问些什么?微服务之springcloud面试题(共22题

首先通过@EnableFeignCleints注解开启FeignCleint

根据Feign的规则实现接口,并加@FeignCleint注解

程序启动后,会进行包扫描,扫描所有的@ FeignCleint的注解的类,并将这些信息注入到ioc容器中。

当接口的方法被调用,通过jdk的代理,来生成具体的RequesTemplate

RequesTemplate在生成Request

Request交给Client去处理,其中Client可以是HttpUrlConnection、HttpClient也可以是Okhttp

最后Client被封装到LoadBalanceClient类,这个类结合类Ribbon做到了负载均衡。

15、Ribbon和Feign的区别: Ribbon和Feign都是用于调用其他服务的,不过方式不同。 1.启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。 2.服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。 3.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。 Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可, 不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

16、什么是Spring Cloud Bus? Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。 如果修改了配置文件,发送一次请求,所有的客户端便会重新读取配置文件 使用: 1、添加依赖 2、配置rabbitmq

17、什么是zuul? Zuul的主要功能是路由转发 Java开源项目【ali1024.coding.net/public/P7/Java/git】 和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。 使用: 1、添加pom依赖 2、配置文件添加相关配置 3、启动类添加注解@EnableZuulProxy

在zuul中, 整个请求的过程是这样的,首先将请求给zuulservlet处理,zuulservlet中有一个zuulRunner对象,该对象中初始化了RequestContext:作为存储整个请求的一些数据,并被所有的z 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 uulfilter共享。zuulRunner中还有 FilterProcessor,FilterProcessor作为执行所有的zuulfilter的管理器。FilterProcessor从filterloader 中获取zuulfilter,而zuulfilter是被filterFileManager所加载,并支持groovy热加载,采用了轮询的方式热加载。有了这些filter之后,zuulservelet首先执行的Pre类型的过滤器,再执行route类型的过滤器,最后执行的是post 类型的过滤器,如果在执行这些过滤器有错误的时候则会执行error类型的过滤器。执行完这些过滤器,最终将请求的结果返回给客户端。

18、什么是Hystrix?它如何实现容错? Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。 通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。 使用: 1、添加pom依赖 2、启动类使用注解@EnableHystrix 3、在Service方法上加上@HystrixCommand注解。该注解对该方法创建了熔断器的功能,并指定了fallbackMethod熔断方法

** 19、springcloud断路器的作用** 当一个服务调用另一个服务由于网络原因或者自身原因出现问题时 调用者就会等待被调用者的响应 当更多的服务请求到这些资源时,导致更多的请求等待 这样就会发生连锁效应(雪崩效应) 断路器就是解决这一问题。 断路器有完全打开状态:一定时间内 达到一定的次数无法调用 并且多次检测没有恢复的迹象 断路器完全打开,那么下次请求就不会请求到该服务 半开:短时间内 有恢复迹象 断路器会将部分请求发给该服务 当能正常调用时 断路器关闭 关闭:当服务一直处于正常状态 能正常调用 断路器关闭

20、Spring Cloud Config 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。 使用: 1、添加pom依赖 2、配置文件添加相关配置 3、启动类添加注解@EnableConfigServer

21、Spring Cloud Gateway Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。 使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改。

22、架构: 在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统 在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服。,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理,配置服务的配置文件放在git仓库,方便开发人员随时改配置。

嗨,你好呀,未来的架构师,本文由Java架构师面试网[www.javajiagoushi.com](()收集整理并进行编辑发布,谢谢大家的支持~

Java高频面试专题合集解析:

Java架构师面试问些什么?微服务之springcloud面试题(共22题_第1张图片

当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!

Java架构师面试问些什么?微服务之springcloud面试题(共22题_第2张图片

更多Java架构进阶资料展示

Java架构师面试问些什么?微服务之springcloud面试题(共22题_第3张图片

Java架构师面试问些什么?微服务之springcloud面试题(共22题_第4张图片

Java架构师面试问些什么?微服务之springcloud面试题(共22题_第5张图片
转存中…(img-OGuQgwAM-1650011471691)]

[外链图片转存中…(img-tBDk6nyd-1650011471692)]

你可能感兴趣的:(Java,经验分享,面试,java)