螺竹编程
发布于 2024-05-19 / 4 阅读
0

Java面试题/后端框架:Dubbo面试题

什么是Dubbo?它的主要特点是什么?

Dubbo是一种高性能开源RPC(远程过程调用)框架,用于构建分布式应用程序。它具有以下主要特点:

  • 面向接口的远程方法调用。

  • 透明化的远程方法调用,使得调用远程服务就像调用本地方法一样。

  • 动态代理实现服务的透明化远程调用。

  • 负载均衡和容错机制,提高系统的可靠性和稳定性。

  • 服务注册与发现,提供了服务的自动注册与发现的功能。

  • 高度可扩展,支持集群部署和分布式扩展。

Dubbo的架构是怎样的?

Dubbo的架构包括以下几个核心组件:

  • 服务提供者(Provider):暴露服务的服务提供方。

  • 服务消费者(Consumer):调用远程服务的服务消费方。

  • 注册中心(Registry):服务注册与发现的中心,负责服务的注册与发现。

  • 监控中心(Monitor):统计服务的调用次数和调用时间的中心,提供监控报表。

  • 配置中心(Config):集中管理服务配置的中心,包括服务的协议、超时等配置。

Dubbo的服务导出和引用过程是怎样的?

Dubbo的服务导出过程包括以下几个步骤:

  1. 服务提供者在启动时,将自己提供的服务注册到注册中心。

  2. 注册中心收到服务提供者的注册请求后,将服务提供者的信息保存起来。

  3. 服务消费者在启动时,从注册中心获取可用的服务提供者列表。

  4. 服务消费者根据负载均衡策略选择一个服务提供者。

  5. 服务消费者通过网络调用选择的服务提供者的方法。

Dubbo支持哪些负载均衡策略?

Dubbo支持多种负载均衡策略,包括:

  • 随机负载均衡(Random Load Balance):随机选择一个可用的服务提供者。

  • 轮询负载均衡(Round Robin Load Balance):按照轮询的方式选择一个可用的服务提供者。

  • 最少活跃调用数负载均衡(Least Active Load Balance):选择活跃调用数最少的服务提供者。

  • 一致性哈希负载均衡(Consistent Hash Load Balance):根据请求的参数进行哈希计算,选择一个服务提供者。

Dubbo的容错机制有哪些?

Dubbo提供了多种容错机制,包括:

  • 失败自动切换(Failover):当调用失败时,自动切换到另一个服务提供者进行重试。

  • 失败快速失败(Failfast):立即返回失败结果,不进行重试。

  • 失败安全(Failsafe):调用失败时,直接忽略错误,不抛出异常。

  • 失败自动恢复(Failback):在调用失败后,后台记录失败请求,定时重发。