85道Dubbo高频题整理(附答案背诵版)

简述什么是Dubbo( 概念 ) ?

Dubbo是一个分布式服务框架,它提供了高性能和透明化的RPC远程服务调用方案以及SOA服务治理方案。Dubbo致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,使得应用可通过高性能RPC实现服务的输出、输入功能和Spring框架无缝集成。

简述为什么要用 Dubbo?

使用Dubbo的原因主要有以下几点:

  1. 分布式系统中的服务调用和协调问题:在分布式系统中,服务之间的相互依赖会导致复杂的通信和协调问题。Dubbo提供了高效的服务调用和自动注册、发现等功能,使得构建分布式应用程序更加容易。
  2. 服务治理和服务调用链追踪:Dubbo可以帮助我们实现服务治理、服务调用链追踪、服务降级、服务熔断等功能,这对于复杂的服务环境非常重要。
  3. 服务拆分和扩展性:随着用户量的增多,应用服务器可能会面临负载压力。此时,我们可以使用Dubbo进行服务拆分,通过增加应用服务器来提高系统的扩展性。
  4. 动态服务发现和负载均衡:Dubbo提供了动态的服务注册和发现机制,以及负载均衡功能,这可以帮助我们在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖。
  5. 服务间依赖关系的可视化:当服务的调用量越来越大,服务的容量问题就暴露出来。Dubbo可以帮助我们自动画出应用间的依赖关系图,以帮助架构师理清理关系。

总的来说,Dubbo作为一种分布式服务框架,对于构建高性能、可扩展、易管理的分布式系统具有重要的价值。

简述 Dubbo 和 Spring Cloud 有什么区别 ?

Dubbo和Spring Cloud都是分布式服务框架,但它们的设计理念、应用场景和功能有所不同。

  1. 定位和设计理念:

    • Dubbo:Dubbo的定位是一款RPC框架,关注服务的调用和治理。它主张简单、高性能和透明化,注重快速构建分布式应用程序。
    • Spring Cloud:Spring Cloud的目标是微服务架构下的一站式解决方案。它集成了众多微服务框架,提供了一系列开箱即用的功能,如配置管理、服务发现、断路器、智能路由等,以帮助开发者快速构建微服务架构的应用程序。
  2. 应用场景:

    • Dubbo:Dubbo适用于各种分布式系统,尤其是那些需要高性能、透明化RPC调用和SOA服务治理的场景。它适用于各种规模的应用程序,无论是小型应用还是大型复杂系统。
    • Spring Cloud:Spring Cloud特别适合构建微服务架构的应用程序。它提供了一系列的子项目,如Spring Cloud Netflix、Spring Cloud Config、Spring Cloud Consul等,这些子项目提供了微服务架构下所需的解决方案。
  3. 功能和组件:

    • Dubbo:Dubbo具有服务注册与发现、负载均衡、容错处理、调用链追踪等功能。它支持多种协议和序列化方式,如Dubbo协议、HTTP协议、Thrift等。此外,Dubbo还提供了可视化管理和监控工具。
    • Spring Cloud:Spring Cloud提供了一系列开箱即用的组件和服务治理方案。它集成了Eureka、Consul等注册中心,提供了服务注册与发现的功能。此外,Spring Cloud还提供了熔断器、路由网关、安全控制等功能。

总的来说,Dubbo注重RPC调用和服务的治理,适用于各种分布式系统;而Spring Cloud注重微服务架构下的一站式解决方案,适用于构建复杂的分布式应用程序。选择哪个框架取决于具体的项目需求和技术栈。

简述Dubbo都支持什么协议,推荐用哪种?

Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议。然而,Dubbo官网推荐使用Dubbo协议。

Dubbo协议是Dubbo的默认协议,采用单一长连接和NIO异步通讯,适用于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。然而,它不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

Dubbo缺省协议使用基于mina 1.1.7和hessian 3.2.1的tbremoting交互。此外,Dubbo还支持WebService协议,这是一种基于Apache CXF 1的frontend-simple和transports-http实现,可以与原生WebService服务互操作。

综上所述,Dubbo推荐使用Dubbo协议,因为它提供了高性能和透明化的RPC远程服务调用方案,适用于小数据量大并发的服务调用场景。如果需要使用其他协议,可以根据具体需求选择合适的协议。

解释Dubbo需要 Web 容器吗?

Dubbo不需要Web容器。

Dubbo是一个分布式服务框架,它是一个独立的启动程序,因为后台服务不需要Tomcat或JBoss等Web容器的功能。如果硬要用Web容器去加载服务提供方,会增加复杂性,并浪费资源。

简述Dubbo内置了哪几种服务容器?

Dubbo内置了三种服务容器:Spring Container、Jetty Container和Log4j Container。

简述Dubbo里面有哪几种节点角色?

Dubbo里面有以下节点角色:

  1. 服务容器(Container):负责启动、加载并运行服务提供者来提供服务。
  2. 服务提供者(Provider):在启动时,向注册中心注册自己提供的服务,暴露接口以提供服务,并将自己的服务信息注册到注册中心。
  3. 服务消费者(Consumer):在启动时,向注册中心订阅自己所需的服务,从注册中心获取远程服务的注册信息,然后进行远程过程调用。

此外,Dubbo还支持多种注册中心,例如Zookeeper、Redis、Multicast和Simple等。

简述Dubbo默认使用什么注册中心 ?

Dubbo默认使用Zookeeper作为注册中心。

阐述Dubbo有哪几种配置方式?

Dubbo主要有四种配置方式:

  1. XML方式:使用XML文件配置服务提供者和消费者的信息,例如服务接口、端口号、负载均衡策略等。
  2. 注解方式:通过注解来配置服务提供者和消费者,例如使用@Service和@Reference注解来分别标注服务提供者和消费者。
  3. API方式:通过编程方式创建服务提供者和消费者,并使用Dubbo API进行配置和管理。
  4. 属性配置方式:通过属性文件或系统环境变量等方式来配置Dubbo的相关参数,例如服务提供者和消费者的端口号、负载均衡策略等。

可以根据具体的需求选择适合的配置方式。

简述Dubbo推荐使用什么序列化框架 ?

Dubbo推荐使用Hessian序列化框架。

Dubbo支持多种序列化框架,包括Hessian、Java、Kryo、FST、Protobuf、Thrift等。其中,Hessian和FST是Dubbo默认的序列化框架,Java和Kryo是官方推荐的序列化框架,而Protobuf、Thrift等则是第三方开源的序列化框架。

简述Dubbo默认使用的是什么通信框架 ?

Dubbo默认使用Netty作为底层通信框架。

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

Dubbo提供了多种集群容错方案,包括:

  1. Failover:失败自动切换,默认的容错方式,适用于读操作。
  2. Failfast:快速失败,适用于非接口幂等的写操作。
  3. Failsafe:失败安全,当出现异常时,直接忽略,一般用于记录日志等操作。
  4. Failback:失败自动恢复,后台记录失败请求,定时重发,用于消息通知操作。
  5. Broadcast:广播调用所有提供者并逐个调用,一般用于查询等要求性能高的操作(不适用于非幂等的插入、删除等操作)。

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

Dubbo提供了以下几种负载均衡策略:

  1. 随机策略(Random):这是Dubbo默认的负载均衡策略,从提供者列表中随机选择一台服务器进行调用。每个提供者被调用的概率是基本相等的,这样可以达到基本的负载均衡效果。
  2. 轮询策略(RoundRobin):这是Dubbo使用较为广泛的负载均衡策略之一,按照提供者列表的顺序依次调用不同的服务器。每次调用完毕后,将下一次调用的服务器序号递增,直到底部后再从头开始,这样可以实现均衡地调用每个提供者的效果。

此外,Dubbo还支持最少活跃调用数策略(LeastActive)、一致性哈希策略(ConsistentHash)等负载均衡策略。具体的选择取决于应用的需求和场景。

简述Dubbo支持服务多协议吗,请详细阐述 ?

是的,Dubbo支持服务多协议。

Dubbo允许配置多协议,可以在不同服务上支持不同协议或者同一服务上同时支持多种协议。默认情况下,Dubbo使用的是dubbo协议,dubbo协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。

除了dubbo协议外,Dubbo还支持另外8种服务暴露协议,如rmi协议、hessian协议、http协议等。不同的协议有不同的特点,适用不同的场景。在实际应用中,可以根据项目需求灵活配置协议。

同时,Dubbo允许对传输的数据使用相应的技术进行缓存,进一步提高服务调用的性能。

总结来说,Dubbo支持服务多协议,可以根据项目需求进行灵活配置。

Dubbo 超时时间怎样设置?

Dubbo超时时间的设置可以通过两种方式进行:全局超时设置和局部超时设置。

  1. 全局超时设置:

Dubbo允许在配置文件中设置全局的超时时间。可以在dubbo.properties文件中添加以下配置:

dubbo.provider.timeout=1000

以上配置将全局的超时时间设置为1000毫秒。

  1. 局部超时设置:

除了全局超时设置外,还可以针对具体的服务进行超时设置。可以在服务提供者或消费者配置文件中,对相应的服务进行超时设置。例如:

服务提供者配置文件:

<dubbo:service interface="com.example.DemoService" ref="demoService" timeout="500"/>

以上配置将为com.example.DemoService接口的服务提供者设置超时时间为500毫秒。

服务消费者配置文件:

<dubbo:reference id="demoService" interface="com.example.DemoService" timeout="1000"/>

以上配置将为com.example.DemoService接口的服务消费者设置超时时间为1000毫秒。

需要注意的是,局部超时设置会覆盖全局超时设置。如果既有全局超时设置又有局部超时设置,以局部超时设置为准。

由于内容太多,更多内容以链接形势给大家,点击进去就是答案了

16. 简述Dubbo 的主要应用场景?

17. 阐述Dubbo 的核心功能?

18. 请详细解释Dubbo 的架构设计?

19. 如何解决Dubbo服务调用链过长的问题?

20. 简述Dubbo服务提供者能实现失效踢出是什么原理?

21. 简述Dubbo如何优雅停机?

22. 简述Dubbo支持服务降级吗,详细解释 ?

23. 简述Dubbo telnet 命令 ?

24. 简述Dubbo支持分布式事务吗?

25. 解释Dubbo服务之间的调用是阻塞的吗?

26. 简述Dubbo可以对结果进行缓存吗?

27. Dubbo 当一个服务接口有多种实现时怎么做?

28. Dubbo 通信协议 dubbo 协议为什么采用异步单一长连接 ?

29. 解释 Dubbo 通信协议 Dubbo 协议为什么不能传大包?

30. 简述Dubbo 通信协议 Dubbo 协议为什么要消费者比提供者个数多 ?

31. Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?

32. 简述Dubbo 与 Spring 的关系?

33. 简述Dubbo 和 Dubbox 之间的区别?

34. Dubbo服务调用超时问题怎么解决?

35. 简答Dubbo 的默认集群容错方案?

36. Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?

37. 简述Dubbo服务读写推荐的容错策略 ?

38. 简述Dubbo必须依赖的包有哪些?

39. 简述Dubbo的管理控制台的作用 ?

40. 简述Dubbo 服务暴露的过程 ?

41. 请举列其他的常用分布式框架?

42. 简述Dubbo 如何集成 Spring Boot ?

43. Dubbo 的 SPI 机制如何实现?

44. 简述Dubbo 的 SPI 机制在框架中的应用有哪些?

45. 简述Dubbo 的服务治理有哪些?它们的作用 ?

46. 详细阐述Dubbo的线程模型 ?

47. 详细阐述Dubbo线程池策略 ?

48. 简述Dubbo Monitor 实现原理?

49. 思考阐述Dubbo 用到哪些设计模式?

50. 解释Dubbo SPI 和 Java SPI 区别?

51. 简述RPC原理和使用到的相关技术 ?

52. 简述并列举目前主流RPC框架 ?

53. 简述如何进行系统拆分?

54. 简述Hessian 的数据结构 ?

55. 简述Dubbo的扩展机制 ?

56. 简述分布式服务接口的幂等性如何设计 ?

57. 简述分布式服务接口请求的顺序性如何保证?

58. 简述Dubbo的调用过程?

59. 简述Dubbo的服务引用的流程 ?

60. 简述Dubbo3 ReferenceConfig 缓存 ?

61. 如何Dubbo3 开启令牌验证 ?

62. 简述Dubbo流量管理 ?

63. 简述Dubbo3 如何启动时检查 ?

64. 简述Dubbo3 如何配置直连提供者 ?

65. Dubbo3 如何实现只订阅不注册配置 ?

66. Dubbo3 可以实现多协议配置码?

67. Dubbo3 如何实现服务分组 ?

68. 简述Dubbo 中如何为同一个服务配置多个版本?

69. 写代码实现Dubbo3 参数验证案例 ?

70. 简述什么是Dubbo3泛化调用 ?

71. Dubbo3 如何实现泛化调用 ?

72. 简述什么是 Dubbo3 回声测试 ?

73. 简述Dubbo 超时设置有哪些方式 ?

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

75. 简述Dubbo 动态代理策略有哪些 ?

76. 老版本的Dubbo如何升级到Dubbo3 ?

77. Dubbo3 如何配置对于 Netty4 支持 ?

78. 简述Dubbo3 导出线程堆栈 ?

79. 如何开启Dubbo3 log4j 日志 ?

80. 如何在Dubbo 中配置延迟连接?

81. 如何配置 Dubbo3 连接控制 ?

82. Dubbo3 如何实现并发控制 ?

83. 请描述什么是Dubbo3 事件通知 ?

84. 简述Dubbo3 异步执行 ?

85. 简述 Dubbo3 异步调用?

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值