【吐血整理】Dubbo常见面试题

1 Dubbo是什么

一个RPC框架,提供了服务管制功能,一般用来实现分布式程序的架构。

2 Dubbo框架

在这里插入图片描述

架构说明

  • 虚线:虚线表示异步,实线表示同步。异步不阻塞线程性能高,同步阻塞线程必须等待响应结果才能继续执行,相对性能低。
  • Provider:提供者。编写持久层、业务层和事务代码。
  • Container:容器(Spring容器),Dubbo完全基于Spring实现的。
  • Registry:注册中心。放置所有Provider对外提供的信息。包含Provider的IP,访问端口,访问遵守的协议,对外提供的接口,接口中有哪些方法等相关信息。
  • Consumer:消费者(RPC调用者,SOA调用服务的项目)开发中也是一个项目,编写service和controller(还可以包括页面等)。调用远程服务实现(XXXXServiceImpl)中的方法。
  • Monitor:监控中心。监控Provider的压力情况等。每隔2分钟Consumer和 Provider会把调用次数发送给Monitor,由Monitor进行统计。

执行流程

  • 0.start:启动Spring容器时会把Provider启动。
  • 1.register:把Provider相关信息注册到Registry里
  • 2.subscribe:Consumer从Registry中订阅Provider的信息
  • 3.notify:通知给Consumer

3 Dubbo支持的协议

Dubbo协议

  • 优点:采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)。
  • 缺点:大文件上传时,可能出现问题(不使用Dubbo实现文件传输)。

RMI(Remote Method Invocation)协议

  • 优点:JDK自带的能力。
  • 缺点:偶尔连接失败。

Hessian协议

  • 优点:可与原生的Hessian相互操作,基于HTTP协议。
  • 缺点:需hessian.jar支持,http短连接开销大。

4 Dubbo和Spring Cloud有什么区别

两者没关联,如果硬要说区别,有以下几点。

通信方式不同

Dubbo使用的是RPC通信,而Spring Cloud使用的是HTTP RESTFul方式。

组成部分不同

在这里插入图片描述

5 Dubbo需要web容器嘛

不需要,如果硬要用web容器,只会增加复杂性,也浪费资源。

6 Dubbo内置了哪几种服务器

Spring Container、Jetty Container、Log4j Container。Dubbo的服务容器只是一个简单的main方法,并加载一个简单的Spring容器,用于暴露服务。

7 Dubbo的注册中心

  • Nacos(阿里巴巴开发的注册中心)
  • Zookeeper:支持分布式,很多周边产品。受限于Zookeeper的稳定性,Zookeeper专门分布式辅助软件,稳定性优化。
  • Multicast:去中心化,不需要单独安装软件。但是Provider、Consumer和Redistry不能跨机房(路由)。
  • Redis:支持集群,性能高。但是要求服务器时间同步,否则可能出现集群失败问题。

8 Dubbo的核心配置有哪些

在这里插入图片描述
在这里插入图片描述

9 Dubbo推荐使用什么序列化框架

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

10 Dubbo使用什么通信框架,还有别的选择么

Dubbo 默认使用 Netty 框架,也是推荐的选择,另外内容还集成有Mina、Grizzly。

11 Dubbo负载均衡策略

  • 集群:一个内容(同一套项目),部署多次,形成的整体称为集群。集群中每个个体应该部署到不同的服务器上
  • 负载均衡是在集群前提下,当访问整个集群时,集群中每个节点被访问次数或频率的规则。
  • Dubbo内置了是个负载均衡策略。默认识Random。
    在这里插入图片描述

12 注册多个同一样的服务,如何测试指定的某一个服务

可以配置环境点对点直连,绕过注册中心,将以服务接口为单位,忽略注册中心的提供者列表。

13 Dubbo支持服务多协议么

Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。

14 当一个服务接口有多种实现时怎么做

当一个接口有多种实现时,可以用 group 属性来分组,服务提供方和消费方都指定同一个 group 即可。

15 服务上线怎么兼容旧版本

可以用版本号(version)过渡,多个不同版本的服务注册到注册中心,版本号不同的服务相互间不引用。这个和服务分组的概念有一点类似。

16 Dubbo如何优雅的关机

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

17 Dubbo的管理控制台能做什么

管理控制台主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。

18 说说Dubbo服务暴露的过程

Dubbo会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了ApplicationListener 的 ServiceBean 类进行回调 onApplicationEvent 事件方法,Dubbo会在这个方法中调用 ServiceBean 父类 ServiceConfig 的 export方法,而该方法真正实现了服务的(异步或者非异步)发布。

19 Dubbo和Dubbox有什么区别

Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如加了服务可 Restful 调用,更新了开源组件等。

20 你觉得Dubbo好还是SpringCloud好

扩展性的问题,没有好坏,只有适合不适合。 Spring Cloud 版本升级太快,组件更新替换太频繁,配置太繁琐。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值