Dubbo高频面试题

news2025/6/1 4:05:24

引言

作为分布式服务框架的标杆,Dubbo凭借其高性能RPC通信、灵活的服务治理能力和丰富的容错机制,成为Java技术栈中微服务领域的核心考点。本文系统梳理Dubbo高频面试核心知识点,涵盖容错策略、负载均衡、注册中心原理、服务上下线感知等关键技术细节,助您深入理解Dubbo设计思想,从容应对分布式服务架构面试挑战。无论是服务注册发现流程,还是ZooKeeper节点监听机制,这里提供清晰的技术脉络与场景化解析。

Dubbo 容错策略(调用失败处理方式)

  1. 默认额外重试2次。
  2. 只请求一次,失败直接抛异常。
  3. 只请求一次,失败吞掉异常 不做任何处理。
  4. 记录失败请求,后台定时任务进行重发。
  5. 广播给服务提供者集群 ,只要有一个节点返回,则成功。
  6. 逐个调用服务提供者集群,只要有一个节点失败,则失败。

Dubbo 核心功能

  1. 面向接口的高性能RPC调用。
  2. 服务自动注册和发现。
  3. 负载均衡策略。
  4. 多样的容错策略。
  5. 可视化服务治理和运维。

Dubbo 负载均衡策略

  1. 随机
  2. 轮询
  3. 加权随机
  4. 加权轮询
  5. 一致性hash
  6. 最小活跃数:当一个新的请求到达时,负载均衡器会检查所有可用服务实例的活跃请求数,并选择活跃请求数最少的实例来处理该请求。如果有多个服务实例的活跃请求数相同且都是最少的,负载均衡器会在这些实例中随机选择一个来处理请求,以避免所有请求都集中到某一个实例上。

Dubbo 工作流程

  1. 服务启动后,provider和consumer根据配置信息,连接到注册中心,分别进行服务注册和服务订阅。
  2. 注册中心根据订阅关系,将provider信息发送给consumer,consumer会将provider信息缓存再本地。如果信息有变化,consumer会收到注册中心的消息推送。
  3. 服务调用时,consumer会生成代理对象,根据负载均衡策略,选择一台provider进行接口调用,同时定时向monitor发送接口调用次数以及耗时。
  4. provider收到请求后对数据进行反序列化,通过代理对象调用具体接口。

Dubbo 如何感知服务下线?

  1. Dubbo通过ZK来实现服务注册和发现,通过ZK来维护提供者和消费者的地址。
  2. /dubbo/services/providers和/dubbo/services/consumers节点维护提供者和消费者地址。
  3. ZK通过心跳检测机制(客户端主动定期向ZooKeeper服务器发送心跳消息,也称为Ping请求),判断Dubbo的服务提供者的运行状态,来决定是否从服务列表中移除,当出现故障时ZK会剔除这个服务地址。
  4. Dubbo的服务消费端通过Watch机制来对/providers节点进行监控,一旦节点下的子节点发生变化,ZK就会发送事件通知Dubbo的服务消费端,消费端收到后会将变更本地缓存的服务地址。

Dubbo 注册中心Zookeeper结构

/dubbo
    └── com.example.DemoService
        ├── providers
        ├── consumers
        ├── configurators
        └── routers
  1. /dubbo/com.example.DemoService:这个节点是具体的服务接口节点,以服务接口的全限定类名命名。每个服务对应一个这样的节点。
  2. /dubbo/com.example.DemoService/providers:这个节点下存储的是所有提供该服务的提供者信息。节点的内容通常是 URL 格式,包含服务提供者的 IP、端口、协议、版本、方法等信息。
  3. /dubbo/com.example.DemoService/consumers:这个节点下存储的是所有订阅了该服务的消费者信息。节点内容也是 URL 格式,包含消费者的 IP、端口、应用名、版本、时间戳等信息。

感谢您的阅读!如果文章中有任何问题或不足之处,欢迎及时指出,您的反馈将帮助我不断改进与完善。期待与您共同探讨技术,共同进步!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2392490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Allegro X PCB设计小诀窍--05.如何在Allegro X中实现隐藏电源飞线效果

背景介绍:在PCB设计过程中,布线初期印制板上的飞线错综复杂,信号线和电源线混合交错,但是实际上对于多层板来说,电源的网络一般是通过电源层铺铜连接的,很少需要走线,这样混乱的情况会严重影响设…

一篇文章教会你ESP8266串口WIFI无线模块实现物联网无线收发,附STM32代码示例

目录 一、ESP-01S无线模块: (1)特点: (2)管脚定义: (3)启动模式: 二、ESP-01S出厂固件烧录: (1)引脚接线: &#xff0…

算法-基础算法

一、枚举算法 也称为穷举算法,指的是按照问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,将它们逐一与目标状态进行比较以得出满足问题要求的解。在列举的过程中,既不能遗漏也不能重复 1. 问题 …

Reactor模式详解:高并发场景下的事件驱动架构

文章目录 前言一、Reactor模式核心思想二、工作流程详解2.1 服务初始化阶段2.2 主事件循环2.3 子Reactor注册流程2.4 IO事件处理时序2.5 关键设计要点 三、关键实现技术四、实际应用案例总结 前言 在现代高性能服务器开发中,如何高效处理成千上万的并发连接是一个关…

项目日记 -Qt音乐播放器 -设置任务栏图标与托盘图标

博客主页:【夜泉_ly】 本文专栏:【Qt音乐播放器】 欢迎点赞👍收藏⭐关注❤️ 代码仓库:MusicPlayer v1.0版视频展示:Qt -音乐播放器(仿网易云)V1.0 前言 本文的目标: 一是设置任务栏的图标, 二…

国产 BIM 软件万翼斗拱的技术突破与现实差距 —— 在创新与迭代中寻找破局之路

万翼斗拱在国产BIM领域迈出重要一步,凭借二三维一体化、参数化建模及AI辅助设计等功能形成差异化竞争力,在住宅设计场景中展现效率优势,但与国际主流软件相比,在功能完整性、性能稳定性和生态成熟度上仍有显著差距,需通…

Golang|etcd服务注册与发现 策略模式

etcd 是一个开源的 分布式键值存储系统(Key-Value Store),主要用于配置共享和服务发现。 ETCD是一个键值(KV)数据库,类似于Redis,支持分布式集群。ETCD也可以看作是一个分布式文件系统&#xff…

STM32的OLED显示程序亲测可用:适用于多种场景的稳定显示解决方案

STM32的OLED显示程序亲测可用:适用于多种场景的稳定显示解决方案 【下载地址】STM32的OLED显示程序亲测可用 这是一套专为STM32设计的OLED显示程序,经过实际测试,运行稳定可靠。支持多种OLED屏幕尺寸和类型,提供丰富的显示效果&am…

【AI News | 20250529】每日AI进展

AI Repos 1、WebAgent 阿里巴巴通义实验室近日发布了WebDancer,一款旨在实现自主信息搜索的原生智能体搜索推理模型。WebDancer采用ReAct框架,通过分阶段训练范式,包括浏览数据构建、轨迹采样、监督微调和强化学习,赋予智能体自主…

Day12 - 计算机网络 - HTTP

HTTP常用状态码及含义? 301和302区别? 301:永久性移动,请求的资源已被永久移动到新位置。服务器返回此响应时,会返回新的资源地址。302:临时性性移动,服务器从另外的地址响应资源,但…

Linux驱动学习笔记(十)

热插拔 1.热插拔:就是带电插拔,即允许用户在不关闭系统,不切断电源的情况下拆卸或安装硬盘,板卡等设备。热插拔是内核和用户空间之间,通过调用用户空间程序实现交互来实现的,当内核发生了某种热拔插事件时…

TI dsp FSI (快速串行接口)

简介 快速串行接口(FSI - Fast Serial Interface )模块是一种串行通信外设,能够在隔离设备之间实现可靠的高速通信。在两个没有共同电源和接地连接的电子电路必须交换信息的情况下,电气隔离设备被使用。 虽然隔离设备促进了信号通…

责任链模式:构建灵活可扩展的请求处理体系(Java 实现详解)

一、责任链模式核心概念解析 (一)模式定义与本质 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,其核心思想是将多个处理者对象连成一条链,并沿着这条链传递请求,直到有某…

wechat-003-学习笔记

1.路由跳转页面:携带的参数会出现在onlaod中的options中。 注意:原生小程序对路由传参的长度也有限制,过长会被截掉。 2.wx.setNavigationBarTitle(Object object) 动态设置当前页面的标题 3.在根目录中的app.json文件中配置 后台播放音乐的能…

【大模型微调】魔搭社区GPU进行LLaMA-Factory微调大模型自我认知

文章概要: 本文是一篇详细的技术教程,介绍如何使用魔搭社区(ModelScope)的GPU资源来进行LLaMA-Factory的模型微调。文章分为11个主要步骤,从环境准备到最终的模型测试,系统地介绍了整个微调流程。主要内容包…

【数据结构】哈希表的实现

文章目录 1. 哈希的介绍1.1 直接定址法1.2 哈希冲突1.3 负载因子1.4 哈希函数1.4.1 除法散列法/除留余数法1.4.2 乘法散列法1.4.3 全域散列法 1.5 处理哈希冲突1.5.1 开放地址法1.5.1.1 线性探测1.5.1.2 二次探测1.5.1.3 双重探测1.5.1.4 三种探测方法对比 1.6.3 链地址法 2. 哈…

永磁同步电机控制算法--基于电磁转矩反馈补偿的新型IP调节器

一、基本原理 先给出IP速度控制器还是PI速度控制器的传递函数: PI调节器 IP调节器 从IP速度控制器还是PI速度控制器的传递函数可以看出,系统的抗负载转矩扰动能力相同,因此虽然采用IP速度控制器改善了转速环的超调问题,但仍然需要通过其他途…

RabbitMQ 应用 - SpringBoot

以下介绍的是基于 SpringBoot 的 RabbitMQ 开发介绍 Spring Spring AMQP RabbitMQ RabbitMQ tutorial - "Hello World!" | RabbitMQ 工程搭建步骤: 1.引入依赖 2.编写 yml 配置,配置基本信息 3.编写生产者代码 4.编写消费者代码 定义监听类,使用 RabbitListener…

基于递归思想的系统架构图自动化生成实践

文章目录 一、核心思想解析二、关键技术实现1. 动态布局算法2. 样式规范集成3. MCP服务封装三、典型应用场景四、最佳实践建议五、扩展方向一、核心思想解析 本系统通过递归算法实现了Markdown层级结构到PPTX架构图的自动转换,其核心设计思想包含两个维度: 数据结构递归:将…

OpenGL Chan视频学习-9 Index Buffers inOpenGL

bilibili视频链接: 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 函数网站: docs.gl 说明: 1.之后就不再单独整理网站具体函数了,网站直接翻译会…