首页 > 其他分享 >Dubbo常见面试题

Dubbo常见面试题

时间:2023-04-28 19:33:30浏览次数:41  
标签:Dubbo 面试题 调用 服务 Spring 常见 注册 Cloud


关注Java后端技术栈

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

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

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

基本工作流程:

Dubbo常见面试题_Cloud

上图中角色说明:

Dubbo常见面试题_官网_02

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支持哪些协议?

Dubbo常见面试题_官网_03

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

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

详细请参考:Dubbo官网

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

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

Dubbo常见面试题_Cloud_04

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

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

Dubbo常见面试题_Cloud_05

服务订阅通常有 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 都有相应的组件来支撑。

Dubbo常见面试题_Cloud_06

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

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

Dubbo常见面试题_Cloud_07


标签:Dubbo,面试题,调用,服务,Spring,常见,注册,Cloud
From: https://blog.51cto.com/u_11702014/6235410

相关文章

  • Java高频面试题和答案
    一、Java基础篇Object有哪些常用方法?大致说一下每个方法的含义Java创建对象有几种方式?获取一个类对象的方式有哪些?ArrayList和LinkedList的区别有哪些?用过ArrayList吗?说一下它有什么特点?有数组了为什么还要搞个ArrayList呢?说说什么是fail-fast?Hashtable与HashMap的区......
  • 常见配置文件在Python中的使用
     配置文件主要为了存储常用的常量,如数据库的信息,通用的账号和密码等。常见的配置文件格式有ini,yaml,toml,json,env等,在做自动化测试的时候,它们都起什么样的作用?在什么样的场合下应用哪些配置文件? 一、ini配置文件简介:ini配置文件是最直接的配置文件,也是最简单的配置文件,将变量......
  • PLC写保护,人机写保护等常见问题汇集
    1、冲床 ,把模块改一下,就可以读写。设备改造,就会遇到别人丢的摊子,要去整理。 2、人机也有保护,不让上传到PC,需要密码等,或者上传了,不能编辑。 ......
  • 接口请求的常见方式
    通过接口请求数据的常见方式有以下几种:①GET:向特定的资源发送请求。【请求制定页面信息,并返回实体主体】②POST:向指定资源提交数据进行处理请求,可能导致新的资源的建立或原有资源的修改。【如 提交表单、上传文件等】③PUT:向指定资源位置上上传其最新内容【从客户端向服务器传......
  • 2023面试自动化测试面试题【含答案】,建议收藏
    1、你做了几年的测试、自动化测试,说一下selenium的原理是什么?我做了五年的测试,1年的自动化测试;selenium它是用http协议来连接webdriver,客户端可以使用Java或者Python各种编程语言来实现;2、什么项目适合做自动化测试?关键字:不变的、重复的、规范的第一点,需求变化不能......
  • Windows/Android/iOS 等常见 User-Agent 大全
    UserAgent中文名为用户代理,简称UA,是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。Python爬虫通过伪装UA可以绕过某些检测。以下为搜集的常见的各浏览器的User-Agent,其中:安卓操作......
  • 接口测试面试题整理
    1.什么是接口测试?接口测试:是测试系统组件间接口的一种测试方法接口测试的重点:检查数据的交换,数据传递的正确性,以及接口间的逻辑依赖关系接口测试的意义:在软件开发的同时实现并行测试,减少页面层测试的深度,缩短整个项目的测试周期2.接口自动化测试的流程?基本的接口功能自动......
  • 常见资产对比小结
    常见资产对比小结,存货固定资产无形资产。......
  • 2、数组问题最常见
    1、二分查找法二分查找法(Java实现)template<typenameT>intbinarySearch1(Tarr[],intn,Ttarget){//在[l...r]的范围里寻找targetintl=0;intr=n-1;intmid;//当l==r时,区间[l...r]依然是有效的while(l<=r)......
  • css--常见左右盒子宽度高度自适应布局
    css--常见左右盒子宽度高度自适应布局 前言前端开发工程师最基础的技能要求是根据ui设计稿还原网页,这就缺少不了必要的网页布局,首先看下最近小伙伴问我的一个问题,他说一个网页有左右两个部分,左右两个部分的宽高度都不固定,要使得右部分的宽度充满剩余的部分,并且高度随......