Java面试题---微服务

EureakServer的搭建流程

第一步,导入eureka-server依赖,以及springboot的web环境依赖。

第二布,主启动类上打注解,@EnableEurekaServer,开启eureka服务端功能

第三步,yml配置文件中,配置注册中心的端口号,主机名,注册中心地址

Ribbon的整合流程

第一步,导入ribbon依赖

第二部,给RestTemplate的Bean定义方法上,加上注解@LoadBalanced,让这个restTemplate有负载均衡的功能

第三步,修改restTemplate调用服务的url,将目标主机名换成目标服务名

Feign的整合流程

第一步,导入openfeign依赖

第二部,主配置类加注解,@EnableFeignClients,开启feign支持

第三步,定义feign客户端接口,并加上注释@FeignClient("目标服务名"),接口中定义方法,该方法的方法名与目标服务的对应方法的方法名,返回值类型,形参列表,url路径要一致

Hystrix的整合流程
  • 第一步,导入hystrix依赖

  • 第二部,主启动类加注解,@EnableCircuitBreaker,开启熔断功能

  • 第三步,在需要开启熔断功能的方法上,加注解@HystrixCommand(fallbackMethod="xxx"),xxx是降级方法

  • 第四步,定义降级方法,方法名需要和fallbackMethod的值一致,形参列表和返回值类型需要和目标方法一致

feign整合Hystrix:

  • 第一步,yml中配置,feign.hystrix.enable=true,开启hystrix功能

  • 第二部,@FeignClient标签中,定义fallback或者fallbackFactory,指定降级类

  • 第三步,

如果是fallback,就实现feign接口,并覆写接口中的方法作为降级方法

如果是fallbackFactory,就实现FallbackFactory接口,同时指定泛型为feign接口,覆写create方法,返回一个feign接口的匿名内部类,类中写降级方法

Zuul的整合流程

第一步,导入zuul依赖

第二步,主启动类上加注解@EnableZuulProxy,开启zuul功能

第三步,yml中配置,统一访问前缀prefix,禁用通过服务名方式访问服务ignoredServices,配置路由routes指定某个服务使用某个路径来访问

ConfigServer的整合流程

配置中心服务端配置:

第一步,导入config-server依赖

第二步,主启动类加注解,@EnableConfigServer,开启配置中心

第三步,配置文件中,配置远程仓库地址,仓库账号密码

客户端配置:

第一步,导入config-client依赖

第二步,创建bootstrap.yml配置文件,配置中心地址config.uri,要拉取的配置文件名name,环境名profile

浏览器发起一个请求,在你的微服务项目中的怎么去执行的?

浏览器发起的所有请求首先通过Nginx,通过负载均衡算法,路由给zuul集群,然后通过zuul前置过滤,作登录校验后,它会从配置中心拉取的通讯地址中,根据url匹配到对应的服务,然后使用ribbon发起restful调用。微服务间也可以通过feign相互调用,最终执行完任务,返回浏览器

说下Ribbon和Feign的区别呢

Ribbon和Feign都是SpringCloud Netflix中实现负载均衡的组件,不同点在于

Ribbon是需要我们手动构建http请求,根据目标服务名通过负载均衡算法直接调用目标服务,

Feign是采用接口的方式,将需要调用的目标服务方法定义成抽象方法,路径,服务名,形参列表,返回值类型需要保持一致。我们只需要调用接口中的方法就可以了。它会自动帮我们生成jdk动态代理,为每个方法生成RequestTemplate并封装url和请求参数,使用负载均衡算法发起调用

Ribbon的实现方式,一般配合RestTemplate发起http请求,我们需要在注册RestTemplate的Bean的方法上加@LoadBalanced,使它具有负载均衡的能力

Feign的实现方式,是在主启动类上加@EnableFeignClients,在客户端接口上加注解@FeignClient

相关推荐
shepherd11115 分钟前
吞吐量提升 10 倍:高并发大批量数据处理任务的架构演进与性能调优
java·后端·架构
ClouGence2 小时前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
plainGeekDev3 小时前
单例模式 → object 声明
android·java·kotlin
用户298698530144 小时前
Java 实现 Word 文档文本与图片提取的方法
java·后端
飞将4 小时前
从零实现数据库(2)——HashIndex + IndexManager
数据库
SimonKing5 小时前
铁子,IntelliJ IDEA 2026.1.3来了,升不升?
java·后端·程序员
咖啡八杯16 小时前
GoF设计模式——策略模式
java·后端·spring·设计模式
用户128526116021 天前
我把祖传Java项目重构后,接口响应从3s砍到了200ms,只改了这几行代码
java
Linsk1 天前
组件 = 模板 + 业务逻辑
java·前端·vue.js