Ribbon 高频面试题及详细答案(真实面试版)-1_第1页
Ribbon 高频面试题及详细答案(真实面试版)-1_第2页
Ribbon 高频面试题及详细答案(真实面试版)-1_第3页
Ribbon 高频面试题及详细答案(真实面试版)-1_第4页
Ribbon 高频面试题及详细答案(真实面试版)-1_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Ribbon高频面试题及详细答案(真实面试版)整套试题为互联网后端/微服务真实高频面试原题,内容贴合实际工作场景,答案简洁、落地、无套话,适合面试突击、复盘背诵。一、基础认知面试题(入门必问)1.简单说下Ribbon是什么,它的作用是什么?Ribbon是SpringCloud体系中客户端负载均衡组件,属于本地负载均衡,不需要独立部署服务,集成在消费者客户端中。核心作用:从注册中心拉取服务列表,在客户端本地实现请求分发、负载均衡、重试、超时控制,解决微服务多实例调用的分发问题,避免单点压力过大。简单理解:Nginx是服务端负载均衡,Ribbon是客户端本地负载均衡。2.Ribbon和Nginx负载均衡的区别?1)部署位置不同Ribbon:消费者客户端本地,属于客户端负载均衡;Nginx:独立网关服务,属于服务端负载均衡。2)生效层级不同Ribbon:微服务之间的内部调用;Nginx:外网入口、前端请求接入。3)性能与资源Ribbon本地计算分发,无中间转发,性能更高;Nginx需要转发请求,存在少量性能损耗。4)功能侧重Ribbon侧重服务调用的负载、重试、容错;Nginx侧重反向代理、限流、静态资源、SSL转发。3.SpringCloud中Ribbon的默认集成关系?和Feign、RestTemplate的关系?1、RestTemplate本身不具备负载均衡能力,Spring通过Ribbon拦截器对其增强,实现负载均衡调用;2、Feign是声明式调用组件,底层默认集成Ribbon,Feign的负载均衡能力全部来自Ribbon;3、三者层级:Feign→Ribbon→真实服务调用。补充:SpringCloud2020之后默认移除Ribbon,推荐使用SpringCloudLoadBalancer,但老项目仍大量使用Ribbon。二、核心原理面试题(进阶高频)4.说说Ribbon的核心工作原理、执行流程?整体分为四步,面试直接按这个流程说即可:第一步:获取服务列表项目启动后,Ribbon会从Nacos/Eureka注册中心定时拉取目标服务的实例列表,缓存到本地内存。第二步:筛选可用实例根据心跳状态、熔断状态,过滤掉宕机、不可用的服务实例,只保留健康节点。第三步:负载均衡算法选择节点通过内置负载均衡规则,从可用列表中选出一个服务实例。第四步:发起远程调用+容错重试拼接真实服务地址,发起HTTP调用;失败时根据配置进行重试、超时熔断处理。5.Ribbon核心组件有哪些?各自作用?1)IRule:负载均衡规则核心接口负责定义节点选择算法,内置多种策略,可自定义。2)IPing:服务健康检测定时检测服务实例是否存活,剔除失效节点。3)ServerList:服务实例列表获取从注册中心拉取服务节点列表。4)ServerListFilter:服务过滤过滤不健康、不符合条件的服务实例。5)LoadBalancerStats:负载均衡统计统计每个节点的请求成功率、响应时间、并发数,为智能负载提供数据支撑。6.Ribbon本地缓存服务列表的机制?会不会数据不一致?Ribbon不会实时监听服务变更,而是定时拉取刷新,默认间隔30秒从注册中心更新服务列表。因此存在短暂数据不一致问题:服务已经下线,但客户端缓存还保留旧节点,会导致短时间调用失败。解决方案:结合心跳检测、快速失败、重试机制,规避短暂脏数据带来的调用异常。三、负载均衡算法面试题(重点必考)7.Ribbon内置的负载均衡策略有哪些?各自适用场景?1)RoundRobinRule轮询(默认)按顺序轮流分发请求,适合各服务器性能一致、无差异的场景,均匀分流。2)RandomRule随机随机挑选节点,实现简单,压力分布相对均匀,生产用得少。3)WeightedResponseTimeRule响应时间加权根据节点平均响应时间加权,响应越快权重越高,分配请求越多,适合机器性能不均的场景。4)BestAvailableRule最优可用优先选择并发请求最小、最空闲的节点,最大程度避免节点过载。5)AvailabilityFilteringRule可用性过滤先过滤掉故障、高并发、高延迟节点,再轮询分发,生产最常用、稳定性最好。6)ZoneAvoidanceRule区域规避(新版本默认)优先同区域调用,跨区域降级,适合多机房、多区域部署架构。8.生产环境为什么推荐使用AvailabilityFilteringRule?默认轮询策略不会判断节点状态,如果某台机器卡顿、宕机、超时,依然会分发请求,导致大量失败。AvailabilityFilteringRule会自动过滤:1、连续失败次数过多的故障节点;2、并发过高、负载过大的节点;过滤后再进行轮询,极大提升微服务调用稳定性,适配生产复杂场景。9.如何自定义Ribbon负载均衡算法?1、新建类实现IRule接口,或继承AbstractLoadBalancerRule;2、重写choose方法,自定义节点选择逻辑(根据权重、IP、业务标签等);3、配置类注入自定义IRuleBean;4、支持全局统一配置,也支持针对单个服务单独配置。四、容错、重试、超时机制(面试高频实战)10.Ribbon的超时机制有哪些?各自含义?Ribbon有两个核心超时参数,面试必问:1)ConnectTimeout连接超时建立TCP连接的最大耗时,默认1秒,超时说明网络不通、服务端口未监听。2)ReadTimeout读取超时连接成功后,接口业务响应的最大耗时,默认1秒,超时说明接口卡顿、业务阻塞。两个超时任意一个触发,都会判定本次调用失败,触发重试。11.Ribbon重试机制规则?哪些场景会重试,哪些不会?会重试的场景:连接超时、读取超时、网络异常、服务断开;不会重试的场景:业务异常(4xx、5xx业务报错、参数错误、业务逻辑异常)。重试策略:默认同一节点重试1次,更换节点重试1次,可自定义重试次数。12.生产中Ribbon重试可能带来什么问题?怎么解决?风险点:1、接口超时重试会导致接口幂等性问题,写接口重复提交造成脏数据;2、瞬时故障下的多次重试,会放大服务压力,引发雪崩。解决方案:1、查询接口可正常开启重试,新增、修改、删除写接口关闭重试;2、业务接口强制保证幂等性;3、结合熔断机制,故障节点快速熔断,避免无效重试。五、进阶原理与踩坑面试题13.Ribbon和Hystrix的区别与配合关系?Ribbon:负责调用层面的负载均衡、重试、超时、选节点,解决“找谁调用、失败重试”的问题;Hystrix:负责熔断、降级、隔离、限流,解决“服务故障防止雪崩”的问题。配合关系:Ribbon是底层调用容错,Hystrix是上层服务容错,两者组合实现微服务完整容错体系。14.为什么Ribbon被淘汰?SpringCloudLoadBalancer优势是什么?1、Ribbon停止更新、版本停滞,官方不再维护;2、Ribbon基于老旧的Http客户端,性能一般,不适配高并发、响应式编程;3、LoadBalancer是Spring官方自研组件,原生适配SpringBoot新版本、响应式WebFlux,轻量化、扩展性更强。但老项目存量极大,面试仍然重点考察Ribbon。15.说说你项目中Ribbon实际踩过的坑及解决方案坑1:服务下线后短时间内仍调用失败原因:客户端本地缓存服务列表未及时刷新;解决:缩短刷新间隔+开启健康过滤+熔断兜底。坑2:写接口重试导致重复数据原因:超时重试机制触发重复请求;解决:写接口关闭重试,全局只给查询接口开启重试。坑3:默认轮询导致故障节点持续接请求原因:默认策略不判断节点状态;解决:替换为可用性过滤策略,自动剔除异常节点。六、手写配置面试题(实操问答)16.如何配置Ribbon超时、重试、负载策略?核心配置(面试口述即可):1、指定负载策略:将IRule替换为AvailabilityFilte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论