热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Java面试Dubbo[一]

本文由编程笔记#小编为大家整理,主要介绍了Java面试-Dubbo[一]相关的知识,希望对你有一定的参考价值。来源:
本文由编程笔记#小编为大家整理,主要介绍了Java面试-Dubbo [ 一 ]相关的知识,希望对你有一定的参考价值。


来源:segmentfault.com/u/jack3021


Dubbo篇

1.Dubbo是什么?

Dubbo是阿里巴巴开源的基于Java的高性能RPC分布式服务框架。


2.为什么使用Dubbo?

因为是阿里开源项目,国内很多互联网公司都在使用,已经经过了很多线上考验。

内部使用Netty、Zookeeper,保证了高性能高可用性。

使用dubbo可以将核心业务抽取出来,作为独立的服务,用于提高业务复用灵活扩展。


3.dubbo支持什么协议,推荐用哪种?



  • dubbo://(推荐)


  • rmi://


  • hessian://


  • http://


  • webservice://


  • thrift://


  • memcached://


  • redis://


  • rest://



4.Dubbo需要 Web 容器吗?

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


5.Dubbo内置了哪几种服务容器?



  • Spring Container


  • Jetty Container


  • Log4j Container


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


6. Dubbo里面有几种节点角色?































节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

7.服务注册与发现的流程图?

Java面试-Dubbo [ 一 ]


8.Dubbo核心的配置有哪些?



































































配置 配置说明 解释
服务配置 用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
引用配置 用于创建一个远程服务代理,一个引用可以指向多个注册中心
协议配置 用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
应用配置 用于配置当前应用信息,不管该应用是提供者还是消费者
模块配置 用于配置当前模块信息,可选
注册中心配置 用于配置连接注册中心相关信息
监控中心配置 用于配置连接监控中心相关信息,可选
提供方配置 当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选
消费方配置 当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
方法配置 用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
参数配置 用于指定方法参数配置

不同粒度配置的覆盖关系

以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:



  • 方法级优先,接口级次之,全局配置再次之。


  • 如果级别一样,则消费方优先,提供方次之。


其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。

Java面试-Dubbo [ 一 ]

(建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置)。

理论上 ReferenceConfig 中除了interface这一项,其他所有配置项都可以缺省不配置,框架会自动使用ConsumerConfig,ServiceConfig, ProviderConfig等提供的缺省配置。

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

1)timeout:方法调用超时

2)retries:失败重试次数,默认重试 2 次

3)loadbalance:负载均衡算法,默认随机

4)actives 消费者端,最大并发调用限制


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



































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

10.Dubbo有哪几种负载均衡策略?



























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

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

可以使用group属性来分组,服务提供方和消费方都指定同一个group即可。


12.Dubbo服务之间的调用是阻塞的吗?

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

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


13.说说 Dubbo 服务暴露的过程

Dubbo会在Spring实例化Bean之后,在刷新容器最后一步发布ContextRefreshEvent事件,通知实现了ApplicationListener的ServiceBean类进行回调onApplicationEvent事件方法,Dubbo会在这个方法中调用ServiceBean父类ServiceConfig的export方法,从而实现了服务发布。










更多精彩

推荐阅读
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 本文介绍了Tomcat的基本操作,包括启动、关闭及首次访问的方法,并详细讲解了如何在IDEA中创建Web项目,配置Servlet及其映射,以及如何将项目部署到Tomcat。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • 告别jQuery:Bootstrap5即将全面脱离jQuery依赖及其他前端热点
    本文精选了2019年2月「前端大全」平台上的15篇热门文章,涵盖技术分享与资源推荐。关注前端大全,获取更多前沿信息,提升您的前端技能。 ... [详细]
  • 本文探讨了在AspNetForums平台中实施基于角色的权限控制系统的方法,旨在为不同级别的用户提供合适的访问权限,确保系统的安全性和可用性。 ... [详细]
  • 深入解析Java SE、Java EE和Java Web的核心知识体系
    通过一系列图表全面解析Java SE、Java EE与Java Web的核心知识体系,帮助开发者快速掌握这些关键技术领域的要点。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • WebBenchmark:强大的Web API性能测试工具
    本文介绍了一款名为WebBenchmark的Web API性能测试工具,该工具不仅支持HTTP和HTTPS服务的测试,还提供了丰富的功能来帮助开发者进行高效的性能评估。 ... [详细]
author-avatar
mobiledu2502900917
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有