Dubbo 19道面试题及答案.docx

preview
需积分: 0 0 下载量 197 浏览量 更新于2023-06-15 收藏 15KB DOCX 举报
Dubbo 是阿里巴巴开源的一款高性能、轻量级的RPC(Remote Procedure Call)框架,它提供了服务自动注册、自动发现等高效的服务治理方案,并且能够与Spring框架无缝集成,简化了分布式服务的开发和管理。Dubbo的主要目标是提高系统的伸缩性和可扩展性,通过透明化的远程方法调用,使得开发者可以像调用本地方法一样调用远程服务。 Dubbo适用于以下场景: 1. 透明化的远程调用:开发者无需关注远程通信细节,只需要像调用本地方法一样调用远程服务。 2. 软负载均衡和容错机制:Dubbo内置了多种负载均衡策略,如随机、轮询等,能够在服务消费者端实现负载均衡,同时提供了故障切换机制,保证服务的高可用性。 3. 服务自动注册与发现:服务提供者在启动时会将自身信息注册到注册中心,服务消费者则可以通过注册中心找到所需服务的提供者,动态调整服务地址,实现服务的动态扩展。 Dubbo的核心功能包括: 1. Remoting:网络通信框架,提供多种NIO框架的抽象封装,支持同步和异步的消息交换方式。 2. Cluster:服务框架,提供透明的远程过程调用,支持多协议,以及软负载均衡、故障容错和地址路由等功能。 3. Registry:服务注册,服务提供者和服务消费者通过注册中心进行服务的注册和发现。 Dubbo的主要组件包括: 1. Provider:服务提供者,负责暴露服务。 2. Consumer:服务消费者,负责调用远程服务。 3. Registry:服务注册中心,存储服务提供者和消费者的信息。 4. Monitor:监控中心,收集服务调用的统计信息。 5. Container:服务运行容器,用于承载服务的运行环境。 Dubbo支持多种通信协议,包括: 1. Dubbo协议:适用于大并发、小数据量的场景,采用单一长连接和NIO异步通信。 2. RMI协议:基于JDK的RMI标准,适合常规的远程服务调用,但可能存在安全漏洞。 3. WebService协议:基于CXF实现,支持与其他Web Service的互操作。 4. HTTP协议:基于Http表单提交,适用于浏览器和JS调用。 5. Hessian协议:基于HTTP和Servlet,与Hessian服务互操作。 6. Memcache和Redis协议:基于这两种缓存技术实现的RPC协议。 推荐使用Dubbo协议,因为它具有较高的性能和较低的网络开销。 Dubbo支持多种注册中心,如Multicast、Zookeeper、Redis和Simple。当注册中心集群挂掉时,由于服务消费者的地址信息已经缓存在本地,所以仍能继续通信,但无法获取新的服务提供者信息。 Dubbo默认使用的通信框架是Netty,它是一个高效的异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。Netty提供了丰富的编解码器,支持多种网络协议,为Dubbo提供了稳定、高效的网络通信能力。