一.为什么使用Dubbo?
- 高性能和轻量级:Dubbo是一个高性能、轻量级的开源Java RPC框架,使得应用可以通过高性能的RPC实现服务的输出和输入功能,同时能够与Spring框架无缝集成。
- 强大的核心能力:Dubbo提供了三大核心能力,包括面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。这使得Dubbo能够高效地处理服务间的通信和治理。
- 智能负载均衡:Dubbo内置了多种负载均衡策略,能够智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
- 服务自动注册与发现:Dubbo支持多种注册中心服务,使得服务实例上下线能够实时感知,便于服务的治理和运维。
- 高度可扩展性:Dubbo遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization都被设计为扩展点,平等对待内置实现和第三方实现,这使得Dubbo具有很高的灵活性和可扩展性。
- 多语言支持:Dubbo提供几乎所有主流语言的SDK实现,使得开发者可以使用统一的微服务开发范式进行跨语言调用。
- 支持多种通信协议:Dubbo不仅支持其自有的dubbo协议,还支持RMI、HTTP、gRPC、TCP等多种主流通信协议,这使得Dubbo能够灵活应对不同的通信需求。
二.Dubbo的整体架构设计有哪些分层?
Dubbo的整体架构设计主要包括以下几个分层:
- 服务接口层(Service Interface Layer):这是Dubbo的最顶层,定义了服务的接口和数据模型。接口层是提供给服务消费者和提供者实现的约定,它独立于具体的实现技术和框架。服务接口层一般以Java接口的形式定义,包含了服务的方法签名、参数以及返回值类型等信息。
- 配置层(Configuration Layer):配置层是Dubbo的配置中心,负责管理和加载各种配置信息。这些配置信息可以包括服务的注册中心、通信协议、负载均衡策略等。Dubbo支持通过配置文件或编程方式来配置框架的行为,配置层将这些配置信息加载到框架中,以便后续的处理和使用。