版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Dubbo高频面试题及真实面试版答案一、基础认知类(初级必问)1、简单说下Dubbo是什么,核心作用是什么?Dubbo是一款开源的、高性能的Java微服务远程调用框架,主打分布式服务治理。最核心的作用就是解决分布式项目中,不同服务之间的远程通信问题,同时提供完整的服务治理能力。传统单体项目所有代码在一起,方法直接本地调用;拆分微服务后,服务部署在不同服务器,无法直接调用,Dubbo就可以实现跨服务、跨机器的接口调用,让远程调用像调用本地方法一样简单。除此之外,它还能做服务注册发现、负载均衡、容错降级、服务监控等核心治理工作。2、Dubbo的核心架构角色有哪些?各自作用?主要有五个核心角色,各司其职,结构非常清晰:Provider(服务提供者):业务服务的提供方,部署在服务器上,暴露自己的接口服务,启动后主动把服务注册到注册中心。Consumer(服务消费者):调用远程服务的客户端,启动后从注册中心订阅需要的服务,缓存服务列表,直接调用提供者接口。Registry(注册中心):核心调度中心,负责服务的注册和发现。接收提供者的服务注册信息,推送最新的服务节点列表给消费者,常用的有Nacos、Zookeeper。Monitor(监控中心):负责统计服务调用的次数、耗时、异常率等数据,用于线上服务监控、问题排查。Container(服务容器):负责启动、加载服务提供者,比如Spring容器,用来托管Dubbo服务的生命周期。3、Dubbo核心工作流程是什么?整体流程非常简单,分为注册、订阅、调用、监控四步:服务提供者启动,扫描自定义的Dubbo服务接口,将服务地址、端口、接口信息注册到注册中心;服务消费者启动,去注册中心订阅自己需要调用的服务,注册中心把存活的服务节点列表推送给消费者;消费者本地缓存服务节点信息,发起调用时,通过负载均衡策略选中一个提供者节点,发起远程调用;调用过程中的耗时、成功失败次数等数据,定时上报到监控中心。4、Dubbo和SpringCloud的区别?项目中为什么用Dubbo?这是面试高频对比题,实际项目中两者定位完全不同:Dubbo是高性能的RPC调用框架,核心强项是远程调用、服务治理、高吞吐低延迟,适合对接口调用性能要求高的业务场景,默认基于TCP协议,传输效率极高。SpringCloud是完整的微服务生态体系,包含注册中心、网关、配置中心、熔断限流等全套组件,默认基于HTTP协议(Rest接口)调用,通用性强,但性能比Dubbo弱。我们项目选用Dubbo,主要是因为内部服务频繁互相调用,接口QPS高、响应速度要求严苛,Dubbo的RPC调用性能远优于HTTP,且自带完善的服务容错、负载均衡,线上稳定性更高。二、核心原理类(中级重点)1、Dubbo的核心四大特性是什么?官方定义的四大核心特性:面向接口、远程调用、透明化、高性能。简单理解:开发者只需要定义Java接口,不需要关心底层网络传输、序列化、连接建立等细节,远程调用和本地调用写法一致,完全透明;底层基于TCP+自定义协议,极致优化,吞吐和延迟表现优异。2、Dubbo的调用流程底层原理?消费者发起一次调用,底层完整链路:消费者通过动态代理生成远程接口的代理对象,开发者调用接口方法,实际是调用代理方法;经过Dubbo多层过滤器链(日志、权限、限流、监控等);通过负载均衡策略筛选出可用的服务提供者节点;经过集群容错层,处理重试、失败、降级等场景;底层通过Netty网络框架,基于TCP协议发送序列化后的请求数据;提供者接收请求,反序列化、匹配对应方法执行,返回结果;消费者接收结果,反序列化后返回业务代码。3、Dubbo支持哪些协议?各自适用场景?Dubbo协议(默认):基于TCP,单一长连接,NIO异步通信,默认序列化,性能最高,适合内部服务高频调用,是项目最常用协议。HTTP协议:基于HTTP,通用性强,跨语言支持好,适合对外提供接口、对接第三方系统的场景。REST协议:基于RESTful风格,适配前后端分离、跨语言调用场景。GRPC协议:谷歌开源,适合跨语言、高并发、大数据传输场景。4、Dubbo序列化方式有哪些?优缺点?DubboHessian2(默认):序列化速度快、压缩率高、兼容性好,适合Java内部服务调用,稳定性最强。JSON序列化:可读性高、跨语言,但序列化后体积大、性能差,不适合高频接口。Protobuf:压缩率极高、性能顶尖,但使用繁琐,需要定义proto文件,一般用于大数据、跨语言场景。三、负载均衡与集群容错(面试核心难点)1、Dubbo有哪几种负载均衡策略?默认是哪个?一共5种,默认使用加权随机(random):随机(Random)默认:按权重随机选择节点,权重越高被选中概率越大,分布均匀,稳定性好,适配大多数场景。轮询(RoundRobin):按顺序轮流调用每个节点,适合各节点性能一致的场景,节点性能不均时会出现负载不均。最少活跃调用(LeastActive):优先选择当前请求处理最少、最空闲的节点,自动适配节点性能差异,慢节点会自动少接收请求,线上高并发场景常用。一致性哈希(ConsistentHash):相同参数的请求始终路由到同一个节点,适合需要会话保持、缓存复用的场景。最短响应时间(ShortestResponse):优先选择响应快的节点,高并发下性能最优。2、Dubbo集群容错策略有哪些?各自适用场景?集群容错是指调用失败后的处理策略,一共6种,面试重点问前4种:Failover(失败重试,默认):调用失败后,自动重试其他节点,默认重试2次。适合读多写少、接口幂等的查询业务,是最常用策略。注意:写业务必须关闭重试,避免重复提交。Failfast(快速失败):调用失败直接报错,不重试。适合非幂等的新增、修改、删除写操作,防止数据重复错乱。Failsafe(失败安全):调用失败直接忽略,返回空结果。适合日志记录、数据统计等非核心、允许丢失的业务。Failback(失败自动恢复):调用失败后异步定时重试,成功后返回结果。适合消息通知、异步同步数据场景。Forking(并行调用):同时调用多个节点,只要一个成功就返回结果,适合对响应速度要求极高的实时业务。Broadcast(广播调用):遍历调用所有节点,任意一个失败就整体失败,适合批量更新配置、统一操作所有服务节点场景。3、为什么写操作不能用默认的Failover重试?怎么解决?因为新增、扣款、修改等写接口大多不幂等,重试会导致重复创建数据、重复扣款、数据错乱等严重线上问题。解决方案:写接口手动指定集群容错策略为Failfast快速失败,禁止重试;同时业务层做好接口幂等设计,通过唯一订单号、token、防重表等方式兜底。四、注册中心与配置(高频实操题)1、Dubbo支持哪些注册中心?Zookeeper和Nacos区别?支持Zookeeper、Nacos、Consul、Eureka等,目前主流使用Nacos。两者核心区别:Zookeeper侧重分布式协调,服务注册是临时节点,稳定性高,但功能单一,不自带配置管理、心跳检测较弱,运维成本高。Nacos专门为微服务设计,同时支持服务注册发现+配置中心,心跳机制完善,控制台可视化,运维简单,性能更好,是现在Dubbo项目的首选。2、Dubbo服务注册的临时节点和持久节点区别?服务提供者注册的是临时节点:服务宕机、断开连接后,注册中心自动删除节点信息,消费者能实时感知,不会调用下线的无效节点。配置信息、持久化数据是持久节点,不会因为服务断开连接而删除。3、Dubbo消费者是实时拉取服务列表吗?不是实时拉取,是订阅推送机制。消费者启动时订阅服务,注册中心服务节点变更时,主动推送最新列表给消费者,消费者本地缓存服务列表,后续调用直接读本地缓存,性能极高,不会频繁请求注册中心。五、超时、重试、线程池问题(线上实战高频)1、Dubbo超时时间怎么配置?生产者和消费者超时谁生效?Dubbo超时配置分为消费者端和提供者端,以消费者配置为准,消费者优先级更高。可以全局配置、接口级别配置、方法级别配置,优先级:方法级>接口级>全局级。默认超时时间是1000毫秒。2、接口超时会引发什么问题?怎么解决?默认Failover策略下,超时会判定为调用失败,自动重试其他节点,高并发下容易引发雪崩效应:大量超时重试导致服务压力翻倍,拖垮整个服务集群。解决方案:写接口改为Failfast禁止重试;合理设置超时时间,不盲目设置过大或过小;配置限流、熔断机制,防止流量积压;优化慢接口代码、SQL,从根源解决超时。3、Dubbo线程池类型?核心参数?Dubbo提供者默认使用固定线程池,核心线程数和最大线程数一致,默认200个线程。核心参数:核心线程数、队列大小、拒绝策略。当请求量超过线程池处理能力,会触发拒绝策略,返回繁忙异常,保护服务不被打垮。六、常见线上问题与踩坑(进阶面试)1、Dubbo服务调用出现noavailableprovider问题,原因及解决?核心原因:消费者订阅不到可用的服务提供者节点。常见原因:提供者服务未启动、启动失败;服务注册配置错误(接口名、分组、版本不匹配);注册中心连接失败、网络不通;服务启动成功但未注册到注册中心。解决:检查服务启动日志、注册中心控制台核对服务节点、核对接口版本和分组、排查网络连通性。2、Dubbo重复调用问题怎么解决?重复调用基本都是重试导致的,解决方式:非幂等写接口关闭重试,使用Failfast策略;业务层实现接口幂等,通过唯一标识防重;合理调小重试次数,非核心业务直接关闭重试。3、Dubbo服务冷热启动问题怎么处理?新服务节点启动后,瞬间接收大量流量,初始化资源、缓存加载慢,容易导致启动初期大量超时报错。解决方案:配置预热权重,新节点启动后权重由低慢慢升高,逐步承接流量,避免冷启动压垮服务。七、高级特性(高阶面试)1、Dubbo的分组和版本有什么用?版本号:用于接口升级兼容,新旧版本接口共存,实现灰度发布、平滑升级,升级服务时不影响线上业务。分组:同一个接口可以多组不同实现,用于环境隔离、业务模块拆分、灰度测试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京保障房中心有限公司2027年校园招聘考试参考题库及答案解析
- 2025年会计初级职称考试《经济法基础》真题及答案
- 先进制造技术电子束直接金属成形技术
- 2026年长沙社工试题(附答案)
- 2026年建设工程安全生产管理条例应用练习题及答案
- 2026年韶山市发展研究中心招聘试题(附答案)
- 2026 年北京市发改委经济分析岗公务员招录笔试试卷 招录 25 人
- 2026年黑龙江省北安市高三数学下册期末考试模拟检测卷及答案【各地真题】
- 2026年黑龙江省同江市高三数学下册期末考试模拟卷附参考答案(能力提升)
- 2026年黑龙江省同江市高三数学下册期末考试模拟测试卷含答案【预热题】
- T/TMAC 248-2025连续石墨化炉能源消耗限额
- 2026年兰州大学物理试题及答案
- 2026畜禽种业自主创新与核心种群建设战略研究报告
- IMDG Code 42-24 修正案 锂电池海运包装标记与标签规范 中文版(P903 包装标识更新全解)
- 校园统一身份认证平台建设方案
- 初中数学七年级上册第一章《数学与我们同行》核心素养知识清单
- 供应链韧性的理论内涵与战略框架构建
- 2026年无人机应用技术考试测试题库附参考答案详解(完整版)
- 2026高考英语考前高频词汇+作文万能模板
- 2024人教版八年级英语下册(全册)教案
- GB/T 8325-2026塑料聚合物分散体和橡胶胶乳pH值的测定
评论
0/150
提交评论