Dubbo常见面试题

article/2025/9/24 3:58:10

关注Java后端技术栈

回复“面试”获取最新资料

其实关于Dubbo的面试题,我觉得最好的文档应该还是官网,因为官网有中文版,照顾了很多阅读英文文档吃力的小伙伴。但是官网内容挺多的,于是这里就结合官网和平时面试被问的相对较多的题目整理了一下。

1,说说一次Dubbo服务请求流程?

基本工作流程:

上图中角色说明:

2,说说Dubbo工作原理

工作原理分10层:

第一层:service层,接口层,给服务提供者和消费者来实现的(留给开发人员来实现)第二层:config层,配置层,主要是对Dubbo进行各种配置的,Dubbo相关配置第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的skeleton,调用的是接口,实现类没有,所以得生成代理,代理之间再进行网络通讯、负责均衡等。第四层:registry层,服务注册层,负责服务的注册与发现第五层:cluster层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务第六层:monitor层,监控层,对rpc接口的调用次数和调用时间进行监控第七层:protocol层,远程调用层,封装rpc调用第八层:exchange层,信息交换层,封装请求响应模式,同步转异步第九层:transport层,网络传输层,抽象mina和netty为统一接口第十层:serialize层,数据序列化层

这是个很坑爹的面试题,但是很多面试官有喜欢问,你真的要背么?你能背那还是不错的,我建议不要背,你就想想Dubbo服务调用过程中应该会涉及到哪些技术,把这些技术穿起来就OK了。

面试扩散

如果让你设计一个RPC框架,你会怎么做?其实你就把上面这个工作原理中涉及的到技术点总结一下就行了。

3,Dubbo支持哪些协议?

还有三种就混个眼熟就行memcached协议、redis协议、rest协议。

上图中基本上把序列化的方式也罗列出来了。

详细请参考:Dubbo官网

4,注册中心挂了,consumer还能不能调用provider

可以,因为刚开始初始化的时候,consumer会将需要的所有提供者的地址等信息拉取到本地缓存,所以注册中心挂了可以继续通信。但是provider挂了,那就没法调用了。

关键字:consumer本地缓存服务列表

5,怎么实现动态感知服务下线的呢?

服务订阅通常有 pull 和 push 两种方式:

  1. pull 模式需要客户端定时向注册中心拉取配置;

  2. push 模式采用注册中心主动推送数据给客户端;

DubboZookeeper注册中心采用是事件通知与客户端拉取方式。服务第一次订阅的时候将会拉取对应目录下全量数据,然后在订阅的节点注册一个 watcher。一旦目录节点下发生任何数据变化,Zookeeper将会通过 watcher 通知客户端。客户端接到通知,将会重新拉取该目录下全量数据,并重新注册 watcher。利用这个模式,Dubbo服务就可以就做到服务的动态发现。

注意:Zookeeper提供了“心跳检测”功能,它会定时向各个服务提供者发送一个请求(实际上建立的是一个 socket 长连接),如果长期没有响应,服务中心就认为该服务提供者已经“挂了”,并将其剔除。

6,Dubbo负载均衡策略?

  • 随机(默认)- 随机来

  • 轮训 -  一个一个来

  • 活跃度-  机器活跃度来负载

  • 一致性hash - 落到同一台机器上

7,Dubbo容错策略

failover cluster模式

provider 宕机重试以后,请求会分到其他的provider上,默认两次,可以手动设置重试次数,建议把写操作重试次数设置成0。

failback模式

失败自动恢复会在调用失败后,返回一个空结果给服务消费者。并通过定时任务对失败的调用进行重试,适合执行消息通知等操作。

failfast cluster模式

快速失败只会进行一次调用,失败后立即抛出异常。适用于幂等操作,写操作,类似于failover cluster模式中重试次数设置为0的情况。

failsafe cluster模式

失败安全是指,当调用过程中出现异常时,仅会打印异常,而不会抛出异常。适用于写入审计日志等操作。

forking cluster模式

并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。

broadcacst cluster模式

广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。

8,Dubbo动态代理策略有哪些?

默认使用javassist动态字节码生成,创建代理类,但是可以通过SPI扩展机制配置自己的动态代理策略

9,说说Dubbo与Spring Cloud的区别?

这是很多面试官喜欢问的话题,本人认为其实他们没什么关联之处,但是硬是要问区别,那就说说吧;

回答的时候主要围绕着四个来说:通信方式、注册中心、监控、断路器,其余像Spring分布式配置、服务网关肯定得知道。

通信方式

Dubbo使用的是RPC通信,Spring Cloud使用的是HTTP RestFul方式

注册中心

Dubbo使用Zookeeper(官方推荐),还有Redis、Multicast、Simple注册中心,但不推荐,

Spring Cloud使用的是Spring Cloud Netflix Eureka

监控

Dubbo使用的是Dubbo-monitor,Spring Cloud使用的是Spring Boot admin

断路器

Dubbo在断路器这方面还不完善,Spring Cloud使用的是Spring Cloud Netflix Hystrix

分布式配置、网关服务、服务跟踪、消息总线、批量任务等

Dubbo目前可以说还是空白,而Spring Cloud 都有相应的组件来支撑。

推荐阅读目前行业薪资原来是这样的...据说程序员才能看懂的趣图
一次蚂蚁金服的辛酸面试历程
5 个刁钻的 String 面试题!

关注Java后端技术栈后发送  干货  免费获取下面超500G的资料


http://chatgpt.dhexx.cn/article/PiJTot9C.shtml

相关文章

Dubbo面试题汇总【40题】

1、Dubbo 是什么? 2、为什么要用Dubbo? 3、Dubbo 和 Spring Cloud 有什么区别? 4、dubbo 都支持什么协议,推荐用哪种? 5、Dubbo 需要 Web 容器吗? 6、Dubbo 内置了哪几种服务容器? 7、Dub…

70道Dubbo面试题及答案(最新整理)

Dubbo面试题及答案【最新版】Dubbo面试题大全(2021版),发现网上很多Dubbo面试题及答案整理都没有答案,所以花了很长时间搜集,本套Dubbo面试题大全 如果不背 Dubbo面试题的答案,肯定面试会挂! 这套Dubbo面试题大全&…

5G SCMA MPA算法

SCMA编码原理如图1所示,这里以六个用户在四个资源块上传输,每个用户采用4点星座图进行调制为例来说明。每个用户对应一个独一无二的码本,每个码本是一个44的复数矩阵,其中矩阵的行表示资源块,矩阵的列表示码字。每个用…

CSMA/CA协议详解

参考:(20条消息) CSMA/CA协议详解【计算机网络】_蓝莓派Alex的博客-CSDN博客_csma/ca 笔记: 无线电波能够向所有的方向传播,且其传播距离受限。当电磁波在传播过程中遇到障碍物时,其传播距离就会受到限制。 如图:如果…

【通信-SCMA】基于串行干扰消除的多用户检测算法附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

SCOM

SCOM&#xff1a;Synchronized COMmunication module 使用的时候要包含:#include <scom.h> 使用的类型和常数typedef struct SCOM_Attrs { /* SCOM object creation attributes */Char dummy; /* no attributes at present */} SCOM_Attrs;t…

SCMA稀疏码多址调制解调系统概述和matlab仿真

目录 1. 引言 2. 数学原理 2.1 资源分配和稀疏码本 2.2 SCMA的编码和调制 2.3 SCMA的信道传输和解调 3. 实现过程 3.1 稀疏码本的构建 3.2 SCMA编码过程 3.3 SCMA解调过程 4. 应用领域 5. 实现难点 5.1 资源分配和编码映射 5.2 信道传输和解调算法 5.3 多用户干扰…

5G通信演进和常见名词释义

写在前面 由于工作性质的变化&#xff0c;需要对5G的通信原理、架构和标准进行深入的了解。借此分享一下5G通信技术初步学习的内容。 通信系统发展演进 5G的含义&#xff0c;即第五代移动通信系统和技术。这种叫法是3G时代开创的&#xff0c;随3G-4G-5G一直沿用下来。那有没…

CSMA、CSMA/CD与CSMA/CA协议

载波监听多路访问&#xff08;CSMA&#xff09;协议 若每个站点在发送数据之前都先侦听一下公用信道&#xff0c;如果信道空闲后再发送&#xff0c;则就会大大降低冲突的可能性&#xff0c;从而提高信道的利用率 。 CS&#xff1a;载波侦听/监听&#xff0c;每一个站在发送数据…

CSMACD协议与CSMACA协议

CSMA/CD协议 全称&#xff1a;载波监听多点接入/碰撞检测CSMA/CD&#xff08;carrier sense multiple access with collision detection&#xff09; CS&#xff1a;载波侦听/监听&#xff0c;每一个站在发送数据之前要检测一下总线是否有其他计算机在发送数据。 MA&#xff1…

深度解读华为5G空口新技术:F-OFDM和SCMA

长江后浪推前浪&#xff0c;4G建设方兴未艾&#xff0c;业界关于5G的讨论已如火如荼。对于每一代移动通信&#xff0c;空口技术都相当于王冠上的明珠。 本文引用地址&#xff1a; http://www.eepw.com.cn/article/271583.htm 在月初的世界移动通信大会上&#xff0c;华为发布了…

基于polar码和SCMA的多用户检测的联合检测译码matlab仿真,polar采用SCAN软译码,SCMA用MPA算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 构造的核心是通过信道极化&#xff08;channel polarization&#xff09;处理&#xff0c;在编码侧采用方法使各个子信道呈现出不同的可靠性&#xff0c;当码长持续增加时&#xff0c;部分信道将…

OTFS-SCMA学习笔记

参考资料&#xff1a;OTFS-SCMA: A Downlink NOMA Scheme for Massive Connectivity in High Mobility Channels OTFS系统流程 X [ m , n ] X[m,n] X[m,n]是DD时延多普勒域 Γ { ( m M Δ f , n N T ) , m 0 , … , M − 1 , n 0 , … , N − 1 } \Gamma\left\{\left(\frac…

【通信】基于Matlab模拟SCMA系统时延调度算法

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 ⛄ 内容介绍 稀疏码多址接入(Sparse Code Multiple …

SCMA基本原理介绍

SCMA: Sparse Code Multiple Access SCMA基本原理 我们考虑一个同步&#xff08;synchronous&#xff09;的SCMA系统&#xff0c; 含1个基站&#xff08;Base Station, BS&#xff09;&#xff1b; J J J个用户&#xff08;so called layers&#xff09;&#xff1b;K个OFDM…

面向5G移动通信的新型多址接入技术-SCMA

从移动通信发展历程来看&#xff0c;通信几乎每隔十年就会换代升级&#xff0c;从80年代的1G通信主要是以语音为主&#xff0c;调制方式是FDMA&#xff1b;90年代2G通信发展了短信传输&#xff0c;调制方式有CDMA,TDMA等&#xff1b;2000年前后3G通信出现&#xff0c;传输速率加…

使用JMeter进行压力测试

1. 引言 在日常开发中&#xff0c;当完成一个接口开发时&#xff0c;需要对接口进行准确性测试&#xff0c;比如PostMan、Swagger等&#xff0c;但在接口上线运行前对其进行性能测试是很有必要的&#xff0c;就是所谓的接口压力测试。 压力测试就是考察当前软硬件环境下系统所…

JMeter进行API服务的压力测试

文章目录 前言一、准备工作1.安装jmeter2.安装java环境 二、JMeter使用样例1.运行JMeter2.创建调用流程1.背景阐述&#xff1a;2.JMeter模拟调用1.添加线程组&#xff1a;2.请求设置3.创建请求流程4.响应时长展示5.监控服务器CPU&#xff0c;MEM&#xff0c;I/O等 前言 本文用…

使用jmeter进行http压力测试(适合小白观看)

今天2019年2月4日&#xff0c;除夕贴完对联等着过大年了&#xff01; 今天来更新一篇博客&#xff0c;关于如何使用 jmeter 对web 进行压力测试&#xff0c;由于我的个人电脑是 deepin(Linux) 操作系统&#xff0c;因此这里就在Linux环境下演示&#xff0c;其实 Linux 演示和 w…

压力测试-Jmeter

我们在开发的过程中&#xff0c;如果遇到系统预估访问量会比较大的时候&#xff0c;或者我们再做底层基础服务的时候&#xff0c;往往需要对我们的服务性能做一些压力测试和稳定性测试&#xff0c;市面上有很多压测工具&#xff0c;今天我们主要讲解的是Jmeter压力测试工具&…