Dubbo面试题(三)

文章目录

  • 前言
  • 一、Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?
  • 二、Dubbo和Spring的关系
  • 三、Dubbo 使用的是什么通信框架?
  • 四、Dubbo 集群提供了哪些负载均衡策略?
  • 五、Dubbo 的集群容错方案有哪些?
  • 六、Dubbo 的默认集群容错方案?
  • 七、Dubbo 支持哪些序列化方式?
  • 八、Dubbo 超时时间怎样设置?
  • 九、服务调用超时问题怎么解决?
  • 十、Dubbo 在安全机制方面是如何解决?
  • 十一、Dubbo 和 Dubbox 之间的区别?
  • 十二、Dubbo 和 Spring Cloud 的关系?
  • 十三、Dubbo和Spring cloud的区别?
  • 总结


前言

  1. Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?
  2. Dubbo和Spring的关系
  3. Dubbo 使用的是什么通信框架?
  4. Dubbo 集群提供了哪些负载均衡策略?
  5. Dubbo 的集群容错方案有哪些?
  6. Dubbo 的默认集群容错方案?
  7. Dubbo 支持哪些序列化方式?
  8. Dubbo 超时时间怎样设置?
  9. 服务调用超时问题怎么解决?
  10. Dubbo 在安全机制方面是如何解决?
  11. Dubbo 和 Dubbox 之间的区别?
  12. Dubbo 和 Spring Cloud 的关系?
  13. Dubbo和Spring cloud的区别?

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

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


二、Dubbo和Spring的关系

Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于Spring 的 Schema 扩展进行加载。


三、Dubbo 使用的是什么通信框架?

默认使用 NIO Netty 框架


四、Dubbo 集群提供了哪些负载均衡策略?

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

五、Dubbo 的集群容错方案有哪些?

  1. Failover Cluster
  2. 失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。
  3. Failfast Cluster
  4. 快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。
  5. Failsafe Cluster
  6. 失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
  7. Failback Cluster
  8. 失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
  9. Forking Cluster
  10. 并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks=“2” 来设置最大并行数。
  11. Broadcast Cluster
  12. 广播调用所有提供者,逐个调用,任意一台报错则报错 。通常用于通知所有提供者更新缓存或日志等本地资源信息。

六、Dubbo 的默认集群容错方案?

Failover Cluster


七、Dubbo 支持哪些序列化方式?

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


八、Dubbo 超时时间怎样设置?

Dubbo 超时时间设置有两种方式:

  1. 服务提供者端设置超时时间,在 Dubbo 的用户文档中,推荐如果能在服务端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供的服务特性。
  2. 服务消费者端设置超时时间,如果在消费者端设置了超时时间,以消费者端为主,即优先级更高。因为服务调用方设置超时时间控制性更灵活。如果消费方超时,服务端线程不会定制,会产生警告。

九、服务调用超时问题怎么解决?

dubbo 在调用服务不成功时,默认是会重试两次的。


十、Dubbo 在安全机制方面是如何解决?

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


十一、Dubbo 和 Dubbox 之间的区别?

dubbox 基于 dubbo 上做了一些扩展,如加了服务可 restful 调用,更新了开源组件等。


十二、Dubbo 和 Spring Cloud 的关系?

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


十三、Dubbo和Spring cloud的区别?

Dubbo面试题(三)_第1张图片
最大的区别:Dubbo 底层是使用 Netty 这样的 NIO 框架,是基于TCP 协议传输的,配合以 Hession 序列化完成 RPC 通信。
而 SpringCloud 是基于 Http 协议+Rest 接口调用远程过程的通信,相对来说,Http 请求会有更大的报文,占的带宽也会更多。但是REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖。


总结

  1. Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?
  2. Dubbo和Spring的关系
  3. Dubbo 使用的是什么通信框架?
  4. Dubbo 集群提供了哪些负载均衡策略?
  5. Dubbo 的集群容错方案有哪些?
  6. Dubbo 的默认集群容错方案?
  7. Dubbo 支持哪些序列化方式?
  8. Dubbo 超时时间怎样设置?
  9. 服务调用超时问题怎么解决?
  10. Dubbo 在安全机制方面是如何解决?
  11. Dubbo 和 Dubbox 之间的区别?
  12. Dubbo 和 Spring Cloud 的关系?
  13. Dubbo和Spring cloud的区别?

你可能感兴趣的:(面试,dubbo)