"Dubbo面试题集合,涵盖了2022年的最新技术要点,包括Dubbo的基础知识、架构设计、分布式框架、注册中心、集群、配置、通信协议、设计模式、运维管理、SPI机制以及其他的常见问题,全面检验对Dubbo的理解和应用能力。"
1. **基础知识**
- **为什么要用Dubbo**:Dubbo是为了应对服务化进程中服务数量增加和服务间复杂依赖而诞生的,它提供了一套服务治理解决方案,包括服务注册、发现、调用、监控等功能。
- **Dubbo是什么**:Dubbo是一款高性能、轻量级的开源Java RPC框架,它具备服务治理、负载均衡、容错机制等核心功能,是阿里巴巴贡献的开源项目。
2. **架构设计**
- **Dubbo核心组件**:包括服务提供者(Provider)、服务消费者(Consumer)、注册中心(Registry)、监控中心(Monitor)等。
- **注册与发现流程**:服务提供者向注册中心注册其提供的服务,服务消费者从注册中心获取服务提供者的地址信息,实现服务发现。
- **整体架构分层**:主要分为服务层、服务治理层、远程调用层、协议层、网络传输层等。
3. **分布式框架**
- **Dubbo与其他框架关系**:Dubbo是早期的微服务框架,SpringCloud是后来出现的更全面的微服务解决方案,两者都可以实现服务治理,但SpringCloud生态系统更完整,涵盖更多组件。
- **与Dubbox的区别**:Dubbox是Dubbo的社区维护版本,增强了某些功能,例如支持更多的协议和注册中心。
4. **注册中心**
- **Dubbo注册中心**:常见的有Zookeeper、Eureka等,负责服务的注册和发现。
- **注册中心故障**:如果注册中心集群挂掉,通常会有备份机制,服务提供者和消费者可以基于本地缓存继续通信一段时间。
5. **集群和负载均衡**
- **负载均衡策略**:Dubbo提供了多种负载均衡策略,如轮询、随机、最少活跃调用数等。
- **容错方案**:包括失败快速失败、Failsafe、Failover、Failfast、FailsafeWithReturn、Fallback、Retry等。
6. **配置**
- **配置加载**:Dubbo的配置可以通过XML、API、注解等多种方式加载到Spring中。
- **核心配置**:包括服务接口、版本、分组、调用超时、重试次数、服务权重等。
7. **通信协议**
- **通信框架**:Dubbo基于Netty实现。
- **支持协议**:如RPC、HTTP、Hessian、RMI等,不同协议有各自的优缺点,例如RPC速度快,HTTP通用性强。
8. **设计模式**
- **Dubbo设计模式**:涉及工厂模式、代理模式、观察者模式、责任链模式等,用于构建灵活可扩展的架构。
9. **运维管理**
- **服务兼容**:通过版本管理和接口兼容性设计,服务上线可以兼容旧版本。
- **telnet命令**:用于诊断和调试,如查看服务状态、调用方法等。
- **服务降级**:在系统压力过大时,可以将非关键服务降级,保证核心服务的正常运行。
10. **SPI**
- **Dubbo SPI**:是Dubbo自定义的扩展机制,与Java SPI类似,用于动态加载服务实现。
11. **其他**
- **分布式事务**:Dubbo本身不直接支持分布式事务,但可以通过X/Open XA、Saga等分布式事务解决方案来实现。
- **序列化方式**:包括Hessian2、Java自带的序列化、FastJson、ProtoBuf等。
- **安全措施**:可以通过认证、授权、加密等方式保障服务调用的安全性。
12. **RPC**
- **RPC原理**:远程过程调用,使得客户端可以调用远程服务器上的方法,如同本地调用。
- **RPC与SOA、SOAP、REST**:RPC更底层,强调方法调用,而SOA是一种架构风格,SOAP是基于XML的Web服务协议,REST是轻量级的HTTP接口设计风格。
以上就是Dubbo面试题中涉及到的主要知识点,全面理解并掌握这些内容,对于面试或实际工作中使用Dubbo会有很大帮助。