黑马程序员技术交流社区

标题: 【广州校区】【原创】Dubbo常见面试题 [打印本页]

作者: 帅气de路人甲    时间: 2020-6-23 17:41
标题: 【广州校区】【原创】Dubbo常见面试题
1、为什么要用 Dubbo?
    随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架

2、Dubbo 的整体架构设计有哪些分层?
    接口服务层(Service):
        该层与业务逻辑相关,根据 provider 和 consumer 的业务设计对应的接口和实现
    配置层(Config):
        对外配置接口,以 ServiceConfig 和 ReferenceConfig 为中心
    服务代理层(Proxy):
        服务接口透明代理,生成服务的客户端 Stub 和 服务端的 Skeleton,以 ServiceProxy 为中心,扩展接口为 ProxyFactory
    服务注册层(Registry):
        封装服务地址的注册和发现,以服务 URL 为中心,扩展接口为RegistryFactory、Registry、RegistryService
    路由层(Cluster):
        封装多个提供者的路由和负载均衡,并桥接注册中心,以Invoker 为中心,扩展接口为 Cluster、Directory、Router 和 LoadBlancce监控层(Monitor):RPC 调用次数和调用时间监控,以 Statistics 为中心,扩展接口为 MonitorFactory、Monitor 和 MonitorService
    远程调用层(Protocal):
        封装 RPC 调用,以 Invocation 和 Result 为中心,扩展接口为 Protocal、Invoker 和 Exporter
    信息交换层(Exchange):
        封装请求响应模式,同步转异步。以 Request 和Response 为中心,扩展接口为 Exchanger、ExchangeChannel、ExchangeClient 和 ExchangeServer
    网络传输层(Transport):
        抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel、Transporter、Client、Server 和 Codec
    数据序列化层(Serialize):
        可复用的一些工具,扩展接口为 Serialization、ObjectInput、ObjectOutput 和 ThreadPool

3、默认使用的是什么通信框架,还有别的选择吗?
    默认也推荐使用 netty 框架,还有 mina

4、服务调用是阻塞的吗?
    默认是阻塞的,可以异步调用,没有返回值的可以这么做;
    Dubbo 是基于 NIO 的非阻塞实现并行调用,
    客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,
    异步调用会返回一个 Future 对象

5、一般使用什么注册中心?还有别的选择吗?
    推荐使用 Zookeeper 作为注册中心,还有 Redis、Multicast、Simple 注册中心,但不推荐

6、默认使用什么序列化框架,你知道的还有哪些?
    推荐使用 Hessian 序列化,还有 Duddo、FastJson、Java 自带序列化。

7、服务提供者能实现失效踢出是什么原理?
    服务失效踢出基于 zookeeper 的临时节点原理。

8、服务上线怎么不影响旧版本?
    采用多版本开发,不影响旧版本。

9、如何解决服务调用链过长的问题?
    可以结合 zipkin 实现分布式服务追踪。

10、说说核心的配置有哪些?
    dubbo:service       服务配置
    dubbo:reference     引用配置
    dubbo:protocol      协议配置
    dubbo:application   应用配置第
    dubbo:module        模块配置
    dubbo:registry      注册中心配置
    dubbo:monitor       监控中心配置
    dubbo:provider      提供方配置
    dubbo:consumer      消费方配置
    dubbo:method        方法配置
    dubbo:argument      参数配置







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2