Redis面试题及答案【2021最新版】Dubbo面试题大全(2021版),发现网上很多Dubbo面试题都没有答案,所以花了很长时间搜集,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,面试经验技巧等,应届生,实习生,企业工作过的,都可参考学习!

如果不背 Dubbo面试题的答案,肯定面试会挂!

这套Redis面试题大全,希望对大家有帮助哈~

博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的

1、Dubbo 集群提供了哪些负载均衡策略?

1、 Random LoadBalance: 随机选取提供者策略,有利于动态调整提供者权重。截面碰撞率高,调用次数越多,分布越均匀;

2、 RoundRobin LoadBalance: 轮循选取提供者策略,平均分布,但是存在请求累积的问题;

3、 LeastActive LoadBalance: 最少活跃调用策略,解决慢提供者接收更少的请求;

4、 ConstantHash LoadBalance: 一致性 Hash 策略,使相同参数请求总是发到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其他提供者,避免引起提供者的剧烈变动;

5、 缺省时为 Random 随机调用

2、RPC的实现基础?

1、 需要有非常高效的网络通信,比如一般选择Netty作为网络通信框架;

2、 需要有比较高效的序列化框架,比如谷歌的Protobuf序列化框架;

3、 可靠的寻址方式(主要是提供服务的发现),比如可以使用Zookeeper来注册服务等等;

4、 如果是带会话(状态)的RPC调用,还需要有会话和状态保持的功能;

3、dubbo 通信协议 dubbo 协议适用范围和适用场景

适用范围:传入传出参数数据包较小(建议小于 100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用 dubbo 协议传输大文件或超大字符串。

适用场景:常规远程服务方法调用

dubbo 协议补充:

连接个数:单连接

连接方式:长连接

传输协议:TCP

传输方式:NIO 异步传输

序列化:Hessian 二进制序列化

4、Dubbo 是什么?

Dubbo 是一款高性能、轻量级的开源 RPC 框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。

5、Dubbo 默认采用注册中心?

采用 Zookeeper

6、Dubbo SPI 和 Java SPI 区别?

JDK SPI:

JDK 标准的 SPI 会一次性加载所有的扩展实现,如果有的扩展很耗时,但也没用上,很浪费资源。所以只希望加载某个的实现,就不现实了

DUBBO SPI:

1、 对 Dubbo 进行扩展,不需要改动 Dubbo 的源码

2、 延迟加载,可以一次只加载自己想要加载的扩展实现。

3、 增加了对扩展点 IOC 和 AOP 的支持,一个扩展点可以直接 setter 注入其它扩展点。

4、 Dubbo 的扩展机制能很好的支持第三方 IoC 容器,默认支持 Spring Bean。

7、Dubbo 有些哪些注册中心?

1、 Multicast 注册中心:Multicast 注册中心不需要任何中心节点,只要广播地址,就能进行服务注册和发现。基于网络中组播传输实现;

2、 Zookeeper 注册中心:基于分布式协调系统 Zookeeper 实现,采用Zookeeper 的 watch 机制实现数据变更;

3、 Redis 注册中心:基于 Redis 实现,采用 key/Map 存储,住 key 存储服务名和类型, Map 中 key 存储服务 URL, value 服务过期时间。基于 Redis 的/订阅模式通知数据变更;

4、 Simple 注册中心

8、Dubbo 超时时间怎样设置?

Dubbo 超时时间设置有两种方式:

服务提供者端设置超时时间,在 Dubbo 的用户文档中,推荐如果能在服务端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供的服务特性。

服务消费者端设置超时时间,如果在消费者端设置了超时时间,以消费者端为主,即优先级更高。因为服务调用方设置超时时间控制性更灵活。如果消费方超时,服务端线程不会定制,会产生警告。

9、Dubbo telnet 命令能做什么?

dubbo 服务发布之后,我们可以利用 telnet 命令进行调试、管理。Dubbo2.0.5 以上版本服务提供端口支持 telnet 命令

10、Dubbo 和 Spring Cloud 有什么哪些区别?

Dubbo 底层是使用 Netty 这样的 NIO 框架,是基于 TCP 协议传输的,配合以 Hession 序列化完成 RPC 通信。

Spring Cloud 是基于 Http 协议 Rest 接口调用远程过程的通信,相对来说 Http 请求会有更大的报文,占的带宽也会更多。但是 REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适,至于注重通信速度还是方便灵活性,具体情况具体考虑。

11、你觉得用 Dubbo 好还是 Spring Cloud 好?

扩展性的问题,没有好坏,只有适合不适合,不过我好像更倾向于使用 Dubbo, Spring Cloud 版本升级太快,组件更新替换太频繁,配置太繁琐,还有很多我觉得是没有 Dubbo 顺手的地方。

12、Dubbo Monitor 实现原理?

Consumer端在发起调用之前会先走filter链;provider端在接收到请求时也是先走filter链,然后才进行真正的业务逻辑处理。

默认情况下,在consumer和provider的filter链中都会有Monitorfilter。

1、 MonitorFilter向DubboMonitor发送数据

2、 DubboMonitor将数据进行聚合后(默认聚合1min中的统计数据)暂存到ConcurrentMap<Statistics, AtomicReference> statisticsMap,然后使用一个含有3个线程(线程名字:DubboMonitorSendTimer)的线程池每隔1min钟,调用SimpleMonitorService遍历发送statisticsMap中的统计数据,每发送完毕一个,就重置当前的Statistics的AtomicReference

3、 SimpleMonitorService将这些聚合数据塞入BlockingQueue queue中(队列大写为100000)

4、 SimpleMonitorService使用一个后台线程(线程名为:DubboMonitorAsyncWriteLogThread)将queue中的数据写入文件(该线程以死循环的形式来写)

5、 SimpleMonitorService还会使用一个含有1个线程(线程名字:DubboMonitorTimer)的线程池每隔5min钟,将文件中的统计数据画成图表

13、RPC使用了哪些关键技术,从调用者的角度看:

服务的调用者启动的时候根据自己订阅的服务向服务注册中心查找服务提供者的地址等信息;

当服务调用者消费的服务上线或者下线的时候,注册中心会告知该服务的调用者;

服务调用者下线的时候,则取消订阅。

14、Dubbo 可以对结果进行缓存吗?

为了提高数据访问的速度。Dubbo 提供了声明式缓存,以减少用户加缓存的工作量<dubbo:reference cache=“true” />

其实比普通的配置文件就多了一个标签 cache=“true”

15、Dubbo 用到哪些设计模式?

Dubbo框架在初始化和通信过程中使用了多种设计模式,可灵活控制类加载、权限控制等功能。

工厂模式

Provider在export服务时,会调用ServiceConfig的export方法。ServiceConfig中有个字段:

private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();

Dubbo里有很多这种代码。这也是一种工厂模式,只是实现类的获取采用了JDK SPI的机制。这么实现的优点是可扩展性强,想要扩展实现,只需要在classpath下增加个文件就可以了,代码零侵入。另外,像上面的Adaptive实现,可以做到调用时动态决定调用哪个实现,但是由于这种实现采用了动态代理,会造成代码调试比较麻烦,需要分析出实际调用的实现类。

装饰器模式

Dubbo在启动和调用阶段都大量使用了装饰器模式。以Provider提供的调用链为例,具体的调用链代码是在ProtocolFilterWrapper的buildInvokerChain完成的,具体是将注解中含有group=provider的Filter实现,按照order排序,最后的调用顺序是:

EchoFilter -> ClassLoaderFilter -> GenericFilter -> ContextFilter -> ExecuteLimitFilter -> TraceFilter -> TimeoutFilter -> MonitorFilter -> ExceptionFilter

更确切地说,这里是装饰器和责任链模式的混合使用。例如,EchoFilter的作用是判断是否是回声测试请求,是的话直接返回内容,这是一种责任链的体现。而像ClassLoaderFilter则只是在主功能上添加了功能,更改当前线程的ClassLoader,这是典型的装饰器模式。

观察者模式

Dubbo的Provider启动时,需要与注册中心交互,先注册自己的服务,再订阅自己的服务,订阅时,采用了观察者模式,开启一个listener。注册中心会每5秒定时检查是否有服务更新,如果有更新,向该服务的提供者发送一个notify消息,provider接受到notify消息后,即运行NotifyListener的notify方法,执行监听器方法。

动态代理模式

Dubbo扩展JDK SPI的类ExtensionLoader的Adaptive实现是典型的动态代理实现。Dubbo需要灵活地控制实现类,即在调用阶段动态地根据参数决定调用哪个实现类,所以采用先生成代理类的方法,能够做到灵活的调用。生成代理类的代码是ExtensionLoader的createAdaptiveExtensionClassCode方法。代理类的主要逻辑是,获取URL参数中指定参数的值作为获取实现类的key。

16、Dubbo 如何优雅停机?

Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。

17、RPC使用了哪些关键技术,NIO通信

出于并发性能的考虑,传统的阻塞式 IO 显然不太合适,因此我们需要异步的 IO,即 NIO。Java 提供了 NIO 的解决方案,Java 7 也提供了更优秀的 NIO.2 支持。可以选择Netty或者MINA来解决NIO数据传输的问题。

18、在使用过程中都遇到了些什么问题?

如序列化问题。

19、集群容错怎么做?

读操作建议使用 Failover 失败自动切换,默认重试两次其他服务器。写操作建议使用 Failfast 快速失败,发一次调用失败就立即报错。

20、Dubbo 超时时间怎样设置?

Dubbo 超时时间设置有两种方式:

服务提供者端设置超时时间,在 Dubbo 的用户文档中,推荐如果能在服务端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供的服务特性。

服务消费者端设置超时时间,如果在消费者端设置了超时时间,以消费者端为主,即优先级更高。因为服务调用方设置超时时间控制性更灵活。如果消费方超时,服务端线程不会定制,会产生警告。

21、Dubbo集群提供了哪些负载均衡策略?

1、 Random LoadBalance: 随机选取提供者策略,有利于动态调整提供者权重。截面碰撞率高,调用次数越多,分布越均匀。

2、 RoundRobin LoadBalance: 轮循选取提供者策略,平均分布,但是存在请求累积的问题。

3、 LeastActive LoadBalance: 最少活跃调用策略,解决慢提供者接收更少的请求。

4、 ConstantHash LoadBalance: 一致性 Hash 策略,使相同参数请求总是发到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其他提供者,避免引起提供者的剧烈变动。

默认为 Random 随机调用。

22、Dubbo 服务器注册与发现的流程?

1、 Provider(提供者)绑定指定端口并启动服务。

2、 提供者连接注册中心,并发本机 IP、端口、应用信息和提供服务信息发送至注册中心存储。

3、 Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信息至注册中心。

4、 注册中心根据消费者所求服务信息匹配对应的提供者列表发送至 Consumer 应用缓存。

5、 Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调用。

6、 Provider 状态变更会实时通知注册中心、在由注册中心实时推送至 Consumer。

23、同一个服务多个注册的情况下可以直连某一个服务吗?

可以直连,修改配置即可,也可以通过 telnet 直接某个服务。

24、默认使用什么序列化框架,你知道的还有哪些?

默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。

25、你还了解别的分布式框架吗?

别的还有 spring 的 spring cloud,facebook 的 thrift,twitter 的 finagle 等。冲上云霄,Dubbo Go!GO语言版本都发布了~推荐阅读:Spring Cloud是什么,和Dubbo对比呢?

26、Dubbo 的使用场景有哪些?

1、 透明化的远程方法调用:就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。

2、 软负载均衡及容错机制:可在内网替代 F5 等硬件负载均衡器,降低成本,减少单点。

3、 服务自动注册与发现:不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

27、Dubbo 的注册中心集群挂掉,者和订阅者之间还能通信么?

可以的,启动 dubbo 时,消费者会从 zookeeper 拉取注册的生产者的地址接口等数据,缓存在本地。

每次调用时,按照本地存储的地址进行调用。

28、同一个服务多个注册的情况下可以直连某一个服务吗?

可以点对点直连,修改配置即可,也可以通过telnet直连某个服务。

29、默认使用什么序列化框架,你知道的还有哪些?

推荐使用Hessian序列化,还有Dubbo、FastJson、Java自带序列化。

30、Dubbo 和 Dubbox 之间的区别?

dubbox 基于 dubbo 上做了一些扩展,如加了服务可 restful 调用,更新了开源组件等。

更多Dubbo面试题 70道

01、 Dubbo 集群提供了哪些负载均衡策略?
02、 RPC的实现基础?
03、 dubbo 通信协议 dubbo 协议适用范围和适用场景
04、 Dubbo 是什么?
05、 Dubbo 默认采用注册中心?
06、 Dubbo SPI 和 Java SPI 区别?
07、 Dubbo 有些哪些注册中心?
08、 Dubbo 超时时间怎样设置?
09、 Dubbo telnet 命令能做什么?
10、 Dubbo 和 Spring Cloud 有什么哪些区别?

11、 你觉得用 Dubbo 好还是 Spring Cloud 好?
12、 Dubbo Monitor 实现原理?
13、 RPC使用了哪些关键技术,从调用者的角度看:
14、 Dubbo 可以对结果进行缓存吗?
15、 Dubbo 用到哪些设计模式?
16、 Dubbo 如何优雅停机?
17、 RPC使用了哪些关键技术,NIO通信
18、 在使用过程中都遇到了些什么问题?
19、 集群容错怎么做?
20、 Dubbo 超时时间怎样设置?

21、 Dubbo集群提供了哪些负载均衡策略?
22、 Dubbo 服务器注册与发现的流程?
23、 同一个服务多个注册的情况下可以直连某一个服务吗?
24、 默认使用什么序列化框架,你知道的还有哪些?
25、 你还了解别的分布式框架吗?
26、 Dubbo 的使用场景有哪些?
27、 Dubbo 的注册中心集群挂掉,者和订阅者之间还能通信么?
28、 同一个服务多个注册的情况下可以直连某一个服务吗?
29、 默认使用什么序列化框架,你知道的还有哪些?
30、 Dubbo 和 Dubbox 之间的区别?

31、 Dubbo 集群容错有几种方案?
32、 Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?
33、 Dubbo 能集成 SpringBoot 吗?
34、 Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
35、 Dubbo 和 Spring Cloud 的关系?
36、 dubbo 推荐用什么协议?
37、 Dubbo 核心组件有哪些?
38、 如何解决服务调用链过长的问题?
39、 Dubbo 使用过程中都遇到了些什么问题?
40、 同一个服务多个注册的情况下可以直连某一个服务吗?

41、 Dubbo 是什么?
42、 Dubbo 核心组件有哪些?
43、 说说核心的配置有哪些?
44、 什么是RPC
45、 RPC使用了哪些关键技术,Thrift
46、 服务读写推荐的容错策略是怎样的?
47、 Dubbo 的默认集群容错方案?
48、 当一个服务接口有多种实现时怎么做?
49、 服务调用超时问题怎么解决?
50、 同一个服务多个注册的情况下可以直连某一个服务吗?

61、 说说核心的配置有哪些?
62、 Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
63、 服务提供者能实现失效踢出是什么原理?
64、 PRC架构组件
65、 服务调用是阻塞的吗?
66、 dubbo 服务集群配置(集群容错模式)
67、 Dubbo 核心功能有哪些?
68、 为什么要用Dubbo?
69、 服务调用超时问题怎么解决
70、 dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多?

如果不背 Dubbo 面试题的答案,肯定面试会挂!

这套Dubbo面试题大全,希望对大家有帮助哈~

博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的

100道 Dubbo面试题及答案(2021最新)相关推荐

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

    Dubbo面试题及答案[最新版]Dubbo面试题大全(2021版),发现网上很多Dubbo面试题及答案整理都没有答案,所以花了很长时间搜集,本套Dubbo面试题大全 如果不背 Dubbo面试题的答案, ...

  2. 100 道 JavaScript 面试题及答案(下)

    编辑整理 | 杨小爱 我们接上昨天的上篇内容<100 道 JavaScript 面试题及答案(上)>,今天我们开启下篇,把后面的50道题认真看完. 现在,我们就开始吧. 51. promi ...

  3. 100 道 JavaScript 面试题及答案汇总(下)

    英文 | https://betterprogramming.pub/100-javascript-interview-questions-58e22e30f7f1 翻译 | 杨小二 接上篇< ...

  4. 100道JavaScript 面试题和答案(下)

    英文 | https://betterprogramming.pub/100-javascript-interview-questions-58e22e30f7f1 翻译 | 杨小二 接上篇<1 ...

  5. 110道 Dubbo面试题及答案(持续更新)

    本人发现网上虽然有不少Dubbo面试题及答案,但第一未必全,第二未必有答案,第三虽然有答案,但未必能在面试中说,所以在本文里,会不断收集各种面试题,并站在面试官的立场上,给出我自己的答案 如果不背 D ...

  6. 建议收藏 100 道 Linux 面试题 附答案

    关注公众号"Java后端技术全栈" 回复"000"获取程序员必备电子书 大家好,我是老田,今天我给大家分享100道Linux面试题. 本文一共 3万多字,分别从 ...

  7. 100道Redis面试题及答案(2021最新)

    在网上看到有关Redis的120道面试题,但是没有给出答案,之前我也在寻找这份Redis面试题的答案,今天特地把答案分享出来. 花了大量时间整理了这套Redis面试题及答案,希望对大家有帮助哈~ 弄明 ...

  8. 300道SpringCloud面试题及答案(最新整理)

    最新SpringCloud面试题及答案[附答案解析]SpringCloud面试题及答案,SpringCloud最新面试题及答案,SpringCloud面试题新答案已经全部更新完了,有些答案是自己总结的 ...

  9. 110道 Redis面试题及答案(最新整理)

    最新Redis面试题及答案[附答案解析]Redis面试题及答案,Redis最新面试题及答案,Redis面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的.这些答案难免会存 ...

最新文章

  1. 利用classloader同一个项目中加载另一个同名的类_线程上下文类加载器ContextClassLoader内存泄漏隐患...
  2. 若依项目linux部署
  3. python读取data_转载 “ 理想国@Data ”重拾Python(5):数据读取 博客
  4. JavaScript基础06-day08【if练习、条件分支语句switch、for循环】
  5. struts2.0和jQuery1.5的json问题
  6. 树莓派VI命令大全(附vim使用异常,卸载重新安装步骤)
  7. 将当前登录用户去重显示。
  8. WPS最大的败笔是“免费用,广告弹窗”,难怪用户纷纷使用office
  9. MyQR库自动为网址生成二维码
  10. zone watermark水位控制
  11. Delphi XE8 iOS与Android移动应用开发(APP开发)[完整中文版]
  12. 安装ADB Interface驱动
  13. java开发表格,JAVA开发简历表格下载
  14. JS正则表达式语法大全(非常详细)
  15. JAVA高级架构师视频课程
  16. DEV中右键菜单如何只在非空单元格上显示?
  17. python ca模块_[转]常用的python模块及安装方法
  18. Iphone开发(九)理解subView,手动实现多个视图切换
  19. CSS diaplay=“grid“未生效与display:block
  20. RFID反向不归零编码(NRZ)

热门文章

  1. 17个Python小窍门
  2. Java中创建String的两种方式差异
  3. 腾讯音乐招 iOS 开发, base 深圳,要求:本科、三年、OC,懂音视频开发优先。...
  4. 《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
  5. Mac 下 IDEA 启动慢的问题
  6. 练习 MongoDB 操作 —— 备份篇(三)
  7. Fetch API 初步解读
  8. JDK动态代理和Cglib的动态代理
  9. linux yum命令详解
  10. Print Model SQL