面试题:


说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?

面试官心理分析

MQ、ES、Redis、Dubbo,上来先问你一些思考性的问题、原理,比如 kafka 高可用架构原理、es 分布式架构原理、redis 线程模型原理、Dubbo 工作原理;之后就是生产环境里可能会碰到的一些问题,因为每种技术引入之后生产环境都可能会碰到一些问题;再来点综合的,就是系统设计,比如让你设计一个 MQ、设计一个搜索引擎、设计一个缓存、设计一个 rpc 框架等等。

那既然开始聊分布式系统了,自然重点先聊聊 dubbo 了,毕竟 dubbo 是目前事实上大部分公司的分布式系统的 rpc 框架标准,基于 dubbo 也可以构建一整套的微服务架构。但是需要自己大量开发。

当然去年开始 spring cloud 非常火,现在大量的公司开始转向 spring cloud 了,spring cloud 人家毕竟是微服务架构的全家桶式的这么一个东西。但是因为很多公司还在用 dubbo,所以 dubbo 肯定会是目前面试的重点,何况人家 dubbo 现在重启开源社区维护了,捐献给了 apache,未来应该也还是有一定市场和地位的。

既然聊 dubbo,那肯定是先从 dubbo 原理开始聊了,你先说说 dubbo 支撑 rpc 分布式调用的架构啥的,然后说说一次 rpc 请求 dubbo 是怎么给你完成的,对吧。


面试题剖析

dubbo工作原理:

  1. 第一层:service 层,接口层,给服务提供者和消费者来实现的
  2. 第二层:config 层,配置层,主要是对 dubbo 进行各种配置的
  3. 第三层:proxy 层,服务代理层,无论是 consumer 还是 provider,dubbo 都给 你生成代理,代理之间进行网络通信
  4. 第四层:registry 层,服务注册层,负责服务的注册与发现
  5. 第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务
  6. 第六层:monitor 层,监控层,对 rpc 接口的调用次数和调用时间进行监控
  7. 第七层:protocal 层,远程调用层,封装 rpc 调用
  8. 第八层:exchange 层,信息交换层,封装请求响应模式,同步转异步
  9. 第九层:transport 层,网络传输层,抽象 mina 和 netty 为统一接口
  10. 第十层:serialize 层,数据序列化层

工作流程

  1. 第一步:provider 向注册中心去注册
  2. 第二步:consumer 从注册中心订阅服务,注册中心会通知 consumer 注册好的服务
  3. 第三步:consumer 调用 provider
  4. 第四步:consumer 和 provider 都异步通知监控中心

注册中心挂了可以继续通信吗?

可以的,启动dubbo时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用

注册中心对等集群,任意一台宕掉后,会自动切换到另一台
注册中心全部宕掉,服务提供者和消费者仍可以通过本地缓存通讯
服务提供者无状态,任一台 宕机后,不影响使用
服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复

dubbo连接注册中心和直连的区别

在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,
点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,

服务注册中心,动态的注册和发现服务,使服务的位置透明,并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover, 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外,注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者
注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表
注册中心和监控中心都是可选的,服务消费者可以直连服务提供者

Dubbo在安全机制方面是如何解决的

Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所允许的调用方。

Dubbo工作流程总结以及常见问题总结相关推荐

  1. 工作流程及常见问题,想做工作认真看完

    工作流程及常见问题,想做工作认真看完 特别声明:所招聘的岗位不收任何费用!(有任何收费行为请投诉!谢谢配合) 因业务需要急招兼职-需求会上网,有购物经验者优先!承诺不收取任何费用! 1. 有上网条件, ...

  2. 工作流程及常见问题,想做工请作认真看完

    工作流程及常见问题,想做工作认真看完 特别声明:永邦隆科技所招聘的岗位不收任何费用!(有任何收费行为请投诉!谢谢配合) 因业务需要急招兼职-需求会上网,有购物经验者优先!承诺不收取任何费用! 1. 有 ...

  3. 2015年工作流程及常见问题,应聘人员请详细了解!

    2015年工作流程及常见问题,应聘人员请详细了解!   特别声明:所招聘的岗位不收任何费用!(有任何收费行为请投诉!谢谢配合!) 据统计,每天有1万人上网开店,网店数量已经突破百万大关!一个没有信誉跟 ...

  4. Pyspider框架工作流程及常见问题

    一.工作流程 1.调度器:从处理器接收的任务队列,在数据库中查找,判断该任务是否为新任务或者需要重新爬取的任务,再根据优先级对任务进行重新排序,再交给抓取器进行处理. 2.抓取器:负责获取网页内容,并 ...

  5. Mybatis工作流程,附带mybatis的mapper文件和config配置文件模板。mapper文件和dao接口的关系——xml中的namespace和sql标签id命名要求。

    1. Mybatis工作流程 1.1 使用MySQL创建数据库girls并生成一个表boys,如下图. 1.2 创建该表对应的简单实体类Boys,如下图. 1.3 创建Dao接口以及和接口同名的map ...

  6. tcp当主动发出syn_一文读懂TCP四次挥手工作原理及面试常见问题汇总

    简述 本文主要介绍TCP四次挥手的工作原理,以及在面试中常见的问题. 字段含义 seq序号:Sequence Number,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行 ...

  7. githooks_使用Githooks改善团队的开发工作流程

    githooks by Daniel Deutsch 由Daniel Deutsch 使用Githooks改善团队的开发工作流程 (Improve your team's development wo ...

  8. 7.hdfs工作流程及机制

    1. hdfs基本工作流程 1. hdfs初始化目录结构 hdfs namenode -format 只是初始化了namenode的工作目录 而datanode的工作目录是在datanode启动后自己 ...

  9. redux的原理、工作流程及其应用

    redux的原理.工作流程及其使用 Redux对于JavaScript应用而言是一个可预测状态的容器.换言之,它是一个应用数据流框架,而不是传统的像underscore.js或者AngularJs那样 ...

最新文章

  1. 计算机怎么设置本地硬盘启动不了,电脑bios怎么设置硬盘启动
  2. RxJava使用(一)基本使用
  3. zookeeper动物园管理员学习笔记
  4. uploadify多文件上传插件
  5. 音视频技术开发周刊 | 187
  6. Heartbeat+httpd+NFS 实现高可用的Web服务器
  7. [vue] 第一次加载页面时会触发哪几个钩子?
  8. Error: EACCES: permission denied, mkdir
  9. [设计模式] ------ 装饰模式
  10. 环信SDK 踩坑记webIM篇(二)
  11. 使用 matlab 数字图像处理(七)—— 频率域处理
  12. 【React】添加新组件
  13. PJzhang:QQ输入法用户许可协议和隐私政策阅读
  14. 机器学习的归宿《终极算法》·一
  15. 杰里之AC897N_AD697N_earphone_release_ V2.0.1 开立体声左右声道数据对调【篇】
  16. Windows 7下旋转屏幕的快捷键
  17. CentOS导入CA证书
  18. Android10闪退无日志,【报Bug】Android10手机白屏闪退
  19. SCI文章下载、选刊、分区查询—起飞站
  20. 计算机管理 存储空间不足,Win7系统提示“存储空间不足,无法处理此命令”怎么办?...

热门文章

  1. 《Effective c++》学习笔记
  2. python实现自动登录网页版_Python实现自动登录站点
  3. 华为自研服务器芯片再下一城,从中国移动招标中获取近两成份额
  4. 基金从业资格证的含金量,你想象不到
  5. DOTween-Ease缓动函数
  6. 软件测试常见的linux场景,干货——软件测试工程师linux的10大场景命令使用
  7. 项目经理责任制核心要点·构建项目经理的选聘体系
  8. CMM和CMMI的关系
  9. php实现TXT小说章节解析、小说章节在线阅读
  10. MOOG伺服阀D792-4013