Dubbo面试题!

Dubbo是一个分布式服务框架,致力于提供高性能和透明性的RPC远程服务调用方案和SOA服务治理方案

Dubbo面试题!_第1张图片

为什么要用Dubbo

因为是阿里的开源项目,国内很多互联网公司都在使用,已经经过很多线上的考验,内部使用了Netty,zookeeper,保证了高性能高可用。
使用Dubbo可以将核心业务抽取出来,作为独立的服务,逐渐行成稳定的服务中心,可用于提高业务的复用灵活扩展,使前端应用能快速的响应多变市场滴需求

Dubbo的应用场景

  1. 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点
  2. 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入
  3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者

Dubbo的核心是什么

  1. 远程通信:提供多种基于长连接的NIO框架的抽象封装,包括多种线程模型、序列化以及“请求—响应”模式的信息交换。
  2. 集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡、失败容错、地址路由和动态配置等集群支持。
  3. 自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

Dubbo里面有哪几种节点角色

Dubbo面试题!_第2张图片

Dubbo有哪几种配置方式?

  1. Spring 配置方式
  2. Java API 配置方式

Dubbo 集群的负载均衡有哪些策略

  1. Dubbo 提供了常见的集群策略实现,并预扩展点予以自行实现。
  2. Random LoadBalance: 随机选取提供者策略,有利于动态调整提供者权重。截面碰撞率高,调用次数越多,分布越均匀;
  3. RoundRobin LoadBalance: 轮循选取提供者策略,平均分布,但是存在请求累积的问题;
  4. LeastActive LoadBalance: 最少活跃调用策略,解决慢提供者接收更少的请求;ConstantHash LoadBalance: 一致性 Hash 策略,使相同参数请求总是发到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其他提供者,避免引起提供者的剧烈变动;

Dubbo 使用的是什么通信框架

      默认使用 Netty 作为通讯框架

Dubbo 推荐用什么协议

      默认使用 dubbo 协议

Dubbo 支持哪些序列化方式

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

Dubbo 有哪些注册中心

  1. Multicast 注册中心:Multicast 注册中心不需要任何中心节点,只要广播地址,就能进行服务注册和发现,基于网络中组播传输实现。
  2. Zookeeper 注册中心:基于分布式协调系统 Zookeeper 实现,采用 Zookeeper 的 watch 机制实现数据变更。
  3. Redis 注册中心:基于 Redis 实现,采用 key/map 存储,key 存储服务名和类型,map 中 key 存储服务 url,value 服务过期时间。基于 Redis 的发布/订阅模式通知数据变更。
  4. Simple 注册中心。

         推荐使用 Zookeeper 作为注册中心

Dubbo的优点:

 

  1. 单一应用架构,当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的 数据访问框架(ORM)是关键。
  2. 垂直应用架构,当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的 Web框架(MVC)是关键。
  3. 分布式服务架构,当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的 分布式服务框架(RPC)是关键。
  4. 流动计算架构当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的 资源调度和治理中心(SOA)是关键。
     

Dubbo 服务开发流程

Dubbo面试题!_第3张图片

Dubbo 和 Spring Cloud 有什么关系

  • Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。
  • Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了 Spring、Spring Boot 的优势之上,两个框架在开始目标就不一致,Dubbo 定位服务治理、Spring Cloud 是打造一个生态。

Dubbo 和 Spring Cloud 有什么区别

1.通信方式不同

Dubbo使用的是RPC通信,Spring Cloud使用的是HTTP RESTFul方式

  • Dubbo 底层是使用 Netty 这样的 NIO 框架,是基于 TCP 协议传输的,配合以 Hession 序列化完成 RPC 通信。
  • Spring Cloud 是基于 Http 协议 Rest 接口调用远程过程的通信,相对来说 Http 请求会有更大的报文,占的带宽也会更多。但是 REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适,至于注重通信速度还是方便灵活性,具体情况具体考虑。
     

2.组件部分不同

Dubbo面试题!_第4张图片

 

你可能感兴趣的:(分布式)