zoukankan      html  css  js  c++  java
  • dubbo面试题目

    1.为什么要用 Dubbo?

    随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。就这样为分布式系统的服务治理框架就出现了,Dubbo 也就这样产生了。

    2.服务调用是阻塞的吗?

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

    3.一般使用什么注册中心?还有别的选择吗?

    推荐使用 Zookeeper 作为注册中心,还有 Redis、Multicast、Simple 注册中心,但不推荐。

    4.Dubbo 推荐用什么协议?

    • dubbo://(推荐)
    • rmi://
    • hessian://
    • http://
    • webservice://
    • thrift://
    • memcached://
    • redis://
    • rest://

    5.画一画服务注册与发现的流程图?

    Dubbo扎心十四问,为了春招决定狂刷这份面试宝典

     

    6.Dubbo 集群容错有几种方案?

    Dubbo扎心十四问,为了春招决定狂刷这份面试宝典

     

    Dubbo扎心十四问,为了春招决定狂刷这份面试宝典

     

    7.Dubbo 服务降级,失败重试怎么做?

    可以通过 dubbo:reference 中设置 mock="return null"。mock 的值也可以修改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口名称+Mock” 后缀。然后在 Mock 类里实现自己的降级逻辑

    8.Dubbo 配置文件是如何加载到 Spring 中的?

    Spring 容器在启动的时候,会读取到 Spring 默认的一些 schema 以及 Dubbo 自定义的 schema,每个 schema 都会对应一个自己的 NamespaceHandler,NamespaceHandler 里面通过 BeanDefinitionParser 来解析配置信息并转化为需要加载的 bean 对象!

    9.Dubbo SPI 和 Java SPI 区别?

    JDK SPI

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

    DUBBO SPI

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

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

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

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

    10.Dubbo 支持服务降级吗?

    以通过 dubbo:reference 中设置 mock="return null"。mock 的值也可以修改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口名称+Mock” 后缀。然后在 Mock 类里实现自己的降级逻辑

    11.Dubbo 如何优雅停机?

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

    12.Dubbo 和 Spring Cloud 的区别?

    根据微服务架构在各方面的要素,看看 Spring Cloud 和 Dubbo 都提供了哪些支持

    Dubbo扎心十四问,为了春招决定狂刷这份面试宝典

     

    使用 Dubbo 构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手,那这些都不是问题;而 Spring Cloud 就像品牌机,在Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。

    13.Dubbo 可以对结果进行缓存吗?

    为了提高数据访问的速度。Dubbo 提供了声明式缓存,以减少用户加缓存的工作量<dubbo:reference cache="true" /> 其实比普通的配置文件就多了一个标签 cache="true"

    14.Dubbo telnet 命令能做什么?

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

    连接服务

    telnet localhost 20880 //键入回车进入 Dubbo 命令模式。

    查看服务列表

    dubbo>ls

    com.test.TestService

    dubbo>ls com.test.TestService

    create

    delete

    query

    • ls (list services and methods)
    • ls : 显示服务列表。
    • ls -l : 显示服务详细信息列表。
    • ls XxxService:显示服务的方法列表。
  • 相关阅读:
    Android开发之JSON数据发送与获取
    Layouts之TableLayout表格布局
    Layouts之GridLayout网格布局
    Android WiFi模块学习
    关于Fragment的讲解及适配
    hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)
    Dynamics CRM SQL转化为FetchXML的在线转化工具
    Dynamics CRM 通过Odata创建及更新记录各类型字段的赋值方式
    shell命令执行hive脚本(hive交互,hive的shell编程)
    CRM 2013 Script Loading Deep Dive
  • 原文地址:https://www.cnblogs.com/fengli9998/p/12101271.html
Copyright © 2011-2022 走看看