zoukankan      html  css  js  c++  java
  • dubbo 初步知识问答

    1、Dubbo是什么?

      Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目

      官网:http://dubbo.apache.org

    2、Dubbo需要 Web 容器吗?

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

    3、Dubbo内置了哪几种服务容器?

    • Spring Container

    • Jetty Container

    • Log4j Container

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

    4、Dubbo里面有哪几种节点角色?

      

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

      

    6、Dubbo默认使用什么注册中心,还有别的选择吗?

      推荐使用 Zookeeper 作为注册中心,还有 nacos、consul、redis 等注册中心。

    7、Dubbo 核心的配置有哪些?

     配置  配置说明
     dubbo:service  服务配置
     dubbo:reference  引用配置
     dubbo:protocol  协议配置
     dubbo:application  应用配置
     dubbo:module  模块配置
     dubbo:registry  注册中心配置
     dubbo:monitor  监控中心配置
     dubbo:provider  提供者配置
     dubbo:consumer  消费者配置
     dubbo:method  方法配置
     dubbo:argument  参数配置

    8、在 Provider 上可以配置的 Consumer 端的属性有哪些?

      1)timeout:方法调用超时
      2)retries:失败重试次数,默认重试 2 次
      3)loadbalance:负载均衡算法,默认随机
      4)actives 消费者端,最大并发调用限制

    9、Dubbo启动时如果依赖的服务不可用会怎样?

      Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,默认 check="true",可以通过 check="false" 关闭检查。

    10、Dubbo推荐使用什么序列化框架,你知道的还有哪些?

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

    11、Dubbo默认使用的是什么通信框架,还有别的选择吗?

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

    12、Dubbo有哪几种集群容错方案,默认是哪种?

     集群容错方案  说明
     Failover Cluster  失败自动切换,自动重试其他服务器(默认)
     Failfast Cluster  快速失败,立即报错,只发起一次调用
     Failsafe Cluster  失败安全,出现异常时,直接忽略
     Failback Cluster  失败自动恢复,记录失败请求,定时重发
     Forking Cluster  并行调用多个服务器,只要一个成功即返回
     Broadcast Cluster  广播逐个调用所有提供者,任意一个报错都会报错

    13、Dubbo有哪几种负载均衡策略,默认是哪种?

     负载均衡策略  说明
    Random LoadBalance  随机,按照权重设置随机概率(默认)
    RoundRobin LoadBalance  轮询,按公约后的权重设置轮询比率
    LeastActive LoadBalance  最少活跃调用数,相同活跃数的随机
    ConsistentHash LoadBalance  一致性 Hash,相同参数的请求总是发到同一提供者

    14、Dubbo支持服务多协议吗?

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

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

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

    16、服务上线怎么兼容旧版本?

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

    17、Dubbo服务之间的调用是阻塞的吗?

      默认是同步等待结果阻塞的,支持异步调用。

      Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。异步调用流程图如下:

      

    18、Dubbo如何优雅停机?

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

    19、服务提供者能实现失效踢出是什么原理?

      服务失效踢出基于 Zookeeper 的临时节点原理。这样就可以自动通知注册了该节点事件监听的客户端。

    20、服务读写推荐的容错策略是怎样的?

      读操作建议使用 Failover 失败自动切换,默认重试两次其他服务器。

      写操作建议使用 Failfast 快速失败,发一次调用失败就立即报错。

    21、说说 Dubbo 服务暴露的过程。

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

    22、Dubbo 和 Dubbox 有什么区别?

      Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如加了服务可 Restful 调用,更新了开源组件等。Dubbo 是从 2014 年开始停止维护,从 2017 年开始重新维护,并进入了 Apache 项目。

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

      扩展性的问题,没有好坏,只有适合不适合,不过我好像更倾向于使用 Spring Cloud。因为 SpringCloud 相关配套组件比较完备,开发构建整个微服务框架更加简单、方便,而 dubbo 可能需要引入其他组件来一起组合构建,在这个过程中还可能会发生不兼容的问题。

  • 相关阅读:
    树四:遍历二叉树
    树三:创建二叉树
    树二:二叉树定义及性质
    树一:定义及存储
    排序七:归并排序
    排序六:快速排序
    排序五:希尔排序
    排序四:冒泡排序
    深入分析Linux内核链表
    179. Largest Number
  • 原文地址:https://www.cnblogs.com/liang1101/p/12745286.html
Copyright © 2011-2022 走看看