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

相关推荐
遥不可及~~斌2 分钟前
Java 面试题集 -- 001
java·开发语言
2501_921649494 分钟前
如何获取美股实时行情:Python 量化交易指南
开发语言·后端·python·websocket·金融
lvbinemail12 分钟前
Grafana模板自动复制图表
数据库·mysql·zabbix·grafana·监控
Miss_Chenzr19 分钟前
Springboot旅游景区管理系统9fu3n(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·旅游
小虾米vivian29 分钟前
dmetl5 运行失败,提示违反协议?
数据库·达梦数据库
C1829818257531 分钟前
HttpURLConnection 与其他客户端关系
java
集智飞行43 分钟前
c++函数传参的几种推荐方式
开发语言·c++
weixin_448119941 小时前
Datawhale Hello-Agents入门篇202512第1次作业
数据库·sql·mysql
通往曙光的路上1 小时前
发邮件1、创建邮箱
java
serendipity_hky1 小时前
【SpringCloud | 第5篇】Seata分布式事务
分布式·后端·spring·spring cloud·seata·openfeign