Dubbo框架简介
-
背景与发展
- 背景: Dubbo 是阿里巴巴开源的一个高性能 Java RPC 框架,最早由阿里巴巴公司内部开发并开源,旨在解决分布式系统中服务间的通信问题。Dubbo 通过提供服务注册与发现、负载均衡、集群容错、动态代理等功能,简化了分布式应用的开发和维护。
- 发展: Dubbo 在开源社区逐渐受到关注,得到了广泛的应用和贡献,成为了一个成熟的微服务框架。然而,由于 Dubbo 的生态系统相对独立,阿里巴巴在内部也积极探索如何更好地构建微服务体系,从而推动了 Spring Cloud Alibaba 的产生。
- 官网: https://cn.dubbo.apache.org/zh-cn/
![在这里插入图片描述](https://img-blog.csdnimg.cn/54809058b4e14129afd10abcb8633c96.png -
与Spring Cloud的对比
- 生态系统: Spring Cloud 是由 Spring 社区推出的一套微服务框架,它集成了一系列开源组件,如 Eureka、Ribbon、Feign、Zuul 等,用于构建和管理微服务。Spring Cloud Alibaba 则是在 Spring Cloud 基础上,结合了阿里巴巴的开源组件,如 Nacos、Sentinel、RocketMQ 等,进一步丰富了微服务的生态系统。
- 通信框架: Spring Cloud 使用的通信框架主要是基于 HTTP 的,如 Feign 进行声明式的 HTTP 客户端调用。而 Dubbo 则是一款 RPC 框架,提供了更高性能的二进制通信方式,适用于需要更高性能和效率的场景。
- 适用场景: Spring Cloud Alibaba Dubbo 更适合复杂的、大规模的分布式系统,特别是在需要高性能和低延迟的情况下。而 Spring Cloud 则更适用于广泛的微服务架构,特别是在 Spring 生态系统已有基础的情况下。
- 功能特性: Spring Cloud Alibaba Dubbo 提供了更多与分布式系统相关的功能,如分布式事务(Seata)、流量控制(Sentinel)等。Spring Cloud 则着重于构建整体的微服务架构,提供了服务发现、负载均衡等核心功能。
- 社区支持: Spring Cloud 由 Spring 社区维护,有着广泛的社区支持和贡献。Spring Cloud Alibaba Dubbo 在阿里巴巴社区的基础上,也受到了一定的支持和贡献,但相对于 Spring Cloud 社区来说规模较小!
服务提供者与消费者
-
定义接口与实现
服务提供者需要定义服务接口并提供实现,消费者则需要引用服务接口并进行远程调用。
服务接口定义(provider-api 模块):
// 示例:com.example.providerapi.UserService public interface UserService { String getUserInfo(String userId); }
服务实现(provider-service 模块):
// 示例:com.example.providerservice.UserServiceImpl @Service public class UserServiceImpl implements UserService { @Override public String getUserInfo(String userId) { return "User info for userId: " + userId; } }
服务提供方配置(provider-service 模块的 application.properties):
spring.application.name=provider-service server.port=8081 # Dubbo 配置 dubbo.application.name=provider-