自学内容网 自学内容网

Dubbo面试题

1. 什么是RPC

RPC远程过程调用协议,他是一种通过网络从远程计算机程序上请求服务,而不需要了解网络底层技术的协议。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源。
简单的说,RPC就是从一台机器上通过参数传递的方式调用另一台机器上的一个函数或方法并得到返回的结果。

2. RPC架构组件

  1. 客户端:服务调用方
  2. 客户端存根:存放服务端地址信息,将客户端的请求参数信息打包成网络信息,在通过网络传输发送给服务端。
  3. 服务端存根:接收客户端发送过来的请求消息并进行解包,然后调用本地服务进行处理。
  4. 服务端:服务的真正提供者。

具体调用过程

  1. 客户端通过调用本地服务的方式调用需要消费的服务
  2. 客户端存根接收到调用请求后负责将方法、入参等信息序列化成能够进行网络传输的消息体
  3. 客户端存根找到远程的服务地址,并且将消息通过网络传送给服务端。
  4. 服务端存根收到消息后进行解码
  5. 服务端存根根据解码结果调用本地服务进行处理。
  6. 本地服务执行具体业务逻辑并将处理结果返回给服务端存根。
  7. 服务端存根将返回结果重新打包成消息并通过网络发送至消费方
  8. 客户端存根接收到消息,并进行解码
  9. 服务消费方得到最终结果。

RPC框架的实现目标则是将上面的步骤完整的封装起来,也就是把调用、编码/解码的过程封装起来,让用户感觉像调用本地服务一样的调用远程服务。

3. RPC的实现基础

  1. 需要非常高效的网络通信框架,比如Netty。
  2. 需要比较高效的序列化框架,比如Protobuf。
  3. 可靠的寻址方式,比如可以使用Zookeeper来注册服务。
  4. 如果是带会话的RPC调用,还需要有会话和状态保持功能。

4. Dubbo是什么

Dubbo是阿里巴巴开源的基于Java的高性能RPC分布式服务框架。其提供了六大核心功能:面向接口代理的高性能RPC调用、智能容错和负责均衡、服务自动注册和发现、高度可扩展能力、运行期流量调度、可视化的服务治理与运维。

5. Dubbo和Spring Cloud的区别

Dubbo是SOA时代的产物,他的关注点主要在于服务的调用,流量分发、流量监控和熔断。 而Spring Cloud诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外,由于依托了Spring、Spring Boot的优势,两个框架在开始目标就不一致。Dubbo定位服务治理,SpringCloud是一个生态。
Dubbo底层使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化完成RPC通信。
Spring Cloud是基于HTTP协议的Rest接口调用远程过程的通信,相对来说Http请求会有更大的报文,占的带宽也会更多。但是Rest相比RPC更为灵活,服务提供方和调用房的依赖只依靠契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。

6. Dubbo核心组件有哪些

Provider: 暴露服务的服务提供方
Consumer:调用远程服务消费方
Registry:服务注册与发现注册中心
Monitor:监控中心和访问调用统计
Container:服务运行容器

7. Dubbo有哪些注册中心

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

8. Dubbo服务器注册与发现的流程

  1. Provider绑定指定端口并启动服务。
  2. 提供者连接注册中心,并将本机IP、端口、应用信息和提供服务信息至注册中心存储。
  3. Consumer,连接注册中心,并发送应用信息、所求服务信息至注册中心。
  4. 注册中心根据消费者所求服务信息匹配对应的提供者列表发送至Consumer应用缓存。
  5. Consumer在发起远程调用时基于缓存的消费者列表择其一发起调用。
  6. Provider状态变更会实时通知注册中心、在由注册中心实时推送至Consumer。

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

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

10. 服务提供者能实现失效踢出是什么原理

服务失效踢出基于Zookeeper的临时节点原理。

11. 如何解决服务调用链过长的问题

Apache Skywalking实现分布式服务追踪。

12. Dubbo集群提供了哪些负载均衡策略

  • Random LoadBalance: 随机选取提供者策略。
  • RoundRobin LoadBalance:轮询选取提供者策略
  • LeastActive LoadBalance:最少活跃调用策略。
  • ConstantHash LoadBalance:一致性Hash策略。

原文地址:https://blog.csdn.net/weixin_42824596/article/details/142468075

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!