Gateway,Feign,Nacos,Ribbon面试题 您所在的位置:网站首页 nacos配置中心连接超时 Gateway,Feign,Nacos,Ribbon面试题

Gateway,Feign,Nacos,Ribbon面试题

2023-07-01 04:40| 来源: 网络整理| 查看: 265

文章目录 Gateway1在你们的顶目中用到了网关的娜些功能?2你在开发过程中经常使用的路由断言有哪些3你们在开发中经常用到的过滤器有哪些?4有没有使用过网关的全局过滤器? Feign1什么是Feign?2 Feign的服务调用和Dubbo有什么区别?3使用Feigni调用服务过程中超时怎么办?4使用Feign进行远程调用,如问实现负载均衡5如问提高Feign的服务调用效率? Nacos1 Nacos作为配置中心的原理2 Nacos如何实现环境隔离,namespace?知道嘛?3什么是Nacos.服务分级存储模型?4 Nacos中注册的服务实例类型有哪些?5 Nacos:和Eureka有什么区别?6项目启动的时候是先加载本地文件还是Nacos中的文件?7如何实现配置的热更新,配置改变的情况下 Ribbon1 Ribbonz是如何实现负载均衡的?2 Ribbon支持的负载均衡策略有哪些?3如何修改Ribbon的负载均衡策略?4如何自定义负载均衡策略?

Gateway 1在你们的顶目中用到了网关的娜些功能?

路由 跨域 鉴权 限流

2你在开发过程中经常使用的路由断言有哪些

Path : 根据请求路径匹配 Before/After : 根据时间路由 , 一般用于新版本上线 Header : 根据请求头路由, 一般用户灰度发布

3你们在开发中经常用到的过滤器有哪些?

AddRequestHeader : 添加请求头 , 用户sentinel黑白名单 RequestRateLimiter : 限流配置 StripPrefix : 取消路径前缀

4有没有使用过网关的全局过滤器?

使用过, 主要通过自定义全局过滤器实现对请求的统一权限校验 客户端发送请求携带token到网关, 由网关负责统一的token解析, 解析完毕之后获取token中的用户信息, 保存到请求头中, 路由到微服务

Feign 1什么是Feign?

1 Feign 是一个声明web服务客户端,这使得编写web服务客户端更容易 2 他将我们需要调用的服务方法定义成抽象方法保存在本地就可以了, 不需要自己构建Http请求了,直接调用接口就行了, 调用方法要和本地抽象方法的映射路径 , 参数和返回类型一致。

2 Feign的服务调用和Dubbo有什么区别?

feign是基于HTTP协议的远程调用 Dubbo是基于RPC的远程调用

3使用Feigni调用服务过程中超时怎么办? 可以调整feign的超时时间 ConnectTimeout ReadTimeout 4使用Feign进行远程调用,如问实现负载均衡

Ribbon

5如问提高Feign的服务调用效率?

Feign底层采用URLConnection发起远程调用, 默认不支持连接池 我们可以修改底层实现使用OkHttp , HttpClient 实现远程调用 , 这样连接可以回收 , 提升了效率 具体做法就是 1 添加feign-httpclient依赖 2 配置使用HttpClient

Nacos 1 Nacos作为配置中心的原理

1 服务提供者在nacos上注册服务信息,然后发送数据到服务端 2 服务消费者主动去服务端上拉取数据

2 Nacos如何实现环境隔离,namespace?知道嘛?

Nacos提供了namespace来实现环境隔离功能。 nacos中可以有多个namespace namespace下可以有group、service等 不同namespace之间相互隔离,例如不同namespace的服务互相不可见 namespace 命名空间 可以自己指定也可以默认产生UUID , 在application.yml配置文件中配置

3什么是Nacos.服务分级存储模型?

一个服务可以有多个实例 , 假如这些实例分布于全国各地的不同机房 , Nacos就将同一机房内的实例 划分为一个集群 , 一个服务可以包含多个集群,形成分级模型 配置 discovery: cluster-name: HZ # 集群名称即可实现 配置之后微服务互相访问时,会尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群

4 Nacos中注册的服务实例类型有哪些?

Nacos的服务实例分为两种l类型: 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

5 Nacos:和Eureka有什么区别?

Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式 临时实例心跳不正常会被剔除,非临时实例则不会被剔除 Nacos支持服务列表变更的消息推送模式,服务列表更新更及时 Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式; Eureka采用AP方式

6项目启动的时候是先加载本地文件还是Nacos中的文件?

在本地文件中会配置Nacos配置中心地址, 所以肯定是先加载本地配置文件, 连接上Nacos再加载配置中心中的文件

7如何实现配置的热更新,配置改变的情况下

不修改源码即可实现配置的更新?

我们使用Nacos作为配置中心, 实现热更新非常简单, 有二种方式 ; 1 在需要热更新的类上添加@RefreshScope注解, 使用@Value注解读取需要更新的配置 2 使用@ConfigurationProperties注解代替@Value注解 , 可以直接实现热更新 当配置方式改变的时候, Nacos会主动向服务推送改变的内容

Ribbon 1 Ribbonz是如何实现负载均衡的?

1 发送请求,被LoadBalancerInterceptor拦截器拦截,请求被交给ribbon来处理 2 拦截器拦截请求,交给了RibbonLoadBalancerClient的execute方法(下面的逻辑都是包含在这个方法中) 3 在进行负载均衡之前首先得知道有哪些服务实例信息,所以通过DynamicServerListLoadBalancer的updateListOfServers方法从注册中心(Eureka)那里获取到了所有的服务实例信息,并且会定时更新 4 使用负载均衡算法(默认轮询算法)从所有的服务实例信息中选择一台机器出来 5 将请求发送给负载均衡选择出来的服务实例上去

2 Ribbon支持的负载均衡策略有哪些?

1 RoundRobinRule 轮询策略 默认采用线性负载轮询负载均衡策略 2 AvailabilityFilteringRule 可用性过滤策略 该策略根据服务状态 (宕机和繁忙) 来分配权重,过滤掉那些因为一直连接失败或高并发的服务实例 3 WeightedResponseTimeRule 加权响应时间策略 是 RoundRibbonRule 的一个子类,它对 RoundRibbonRule 的功能进行了扩展。它根据每一个服务实例的运行情况先计算出该服务实例的一个权重,然后根据权重进行服务实例的挑选,这样能够调用到更优的服务实例。 4 ZoneAvoidanceRule 区域感知轮询策略 该策略以区域、可用的服务器为基础,选择服务实例并对服务实例进行分类 5 BestAvailableRule 最空闲策略 该服务是逐个考察各服务实例,然后选择一个最小的并发请求的服务实例来提供实例 6 RandomRule 随机策略 随机选择一个可用的服务实例。 7 RetryRule 重试策略

3如何修改Ribbon的负载均衡策略?

修改Ribbon负载均衡策略的方式有二种 : 1.在配置类中配置IRule 2.在application.yml配置文件中配置

4如何自定义负载均衡策略?

Ribbon自定义负载均衡也很简单 , 自己创建类实现IRule接口 , 实现里面的choose方法即可 , 至于具体的负载均衡规则如何做是什么就要看具体的需求了



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有