Dubbo和SpringCloud区别详解(4大核心区别)

Dubbo和SpringCloud区别详解(4大核心区别)-mikechen

微服务框架有两大选择:Dubbo和SpringCloud,很多同学搞不清楚如何选择,以及两者的区别,本篇就重点详解Dubbo和SpringCloud区别@mikechen

核心设计不同

Dubbo 是阿里巴巴在 2011 年开源的 RPC(远程过程调用)框架,最初用于构建高性能、高吞吐量的分布式服务。

Dubbo和SpringCloud区别详解(4大核心区别)-mikechen

Spring Cloud 是基于 Spring Boot 开发的微服务框架,它结合了一系列的微服务工具,为开发者提供了构建分布式系统的完整解决方案。

比如,Eureka、Ribbon、Hystrix ….等来解决微服务相关的:服务注册与发现、以及负载均衡、熔断…等技术。

Dubbo和SpringCloud区别详解(4大核心区别)-mikechen

虽然,Dubbo最早定位为高性能RPC框架,但是随着近几年得到了重视、和重新投入,Dubbo 已经从原来的纯 RPC 框架,扩展为一整套微服务解决方案。

 

通信协议不同

Dubbo 主要用于企业内部系统,通常选择其原生的 Dubbo 协议,来实现高性能的服务间通信。

基于长连接和 NIO(非阻塞 IO)模型,使用自定义的二进制协议,进行高效的服务调用。

Dubbo和SpringCloud区别详解(4大核心区别)-mikechen

Spring Cloud 通信协议的选择更为灵活,通常基于 HTTP/REST…等协议进行微服务间的交互。

基于 HTTP 协议的同步请求/响应模式,通常结合 JSON 、或 XML 进行数据传输。

REST 是基于文本的协议,性能不如二进制协议高效。

但它的易用性、和与前端、第三方系统的良好兼容性,使其在互联网应用中非常流行。

如果你对性能没有这么高的要求,更考虑通用性,可以考虑Spring Cloud 。

Dubbo 主要依赖其高性能的 二进制协议,如 :Dubbo 原生协议,用于企业内部系统的 高效 RPC 调用,适合对性能、和吞吐量有严格要求的场景。

 

核心实现不同

Dubbo核心是一个高性能的 RPC 框架,支持多种传输协议(如 :Dubbo、REST、HTTP…等)和序列化方式(如 Hessian、Protobuf…等等)。

支持服务发现与注册,最早支持 ZooKeeper ,现在也可以接入Nacos…等注册中心,实现服务注册、与发现。

配合 Dubbo Admin 等管理工具,Dubbo 可实现简单的服务监控、和治理。

Dubbo和SpringCloud区别详解(4大核心区别)-mikechen

SpringCloud以 Spring Boot 为基础,集成了多个微服务工具/和框架,构成一个完整的微服务生态系统。

如”配置管理(Spring Cloud Config)、分布式追踪(Spring Cloud Sleuth)、熔断器(Hystrix)、负载均衡(Ribbon)、API 网关(Zuul/ 或 Spring Cloud Gateway)、消息总线(Spring Cloud Bus)。。。等。

SpringCloud更注重与 Spring 生态的无缝集成,便于与现有 Spring 项目结合。

 

应用场景不同

Dubbo

设计重点:高性能 RPC 调用,注重服务间的高效通信;

架构特点:包括服务提供者、消费者、注册中心、协议、与序列化;

+------------------+       +------------------+
|   Service A      |<----->|   Service B      |
| (Provider)       |       | (Provider)       |
+------------------+       +------------------+
        ^                         ^
        |                         |
        v                         v
+------------------+       +------------------+
|  Service Registry|       |  Service Registry|
|  (e.g., ZooKeeper)       |  (e.g., ZooKeeper)|
+------------------+       +------------------+
        ^                         ^
        |                         |
        v                         v
+------------------+       +------------------+
|   Service C      |<----->|   Service D      |
| (Consumer)       |       | (Consumer)       |
+------------------+       +------------------+

适用场景:适合对性能要求高的企业内部服务调用。

Spring Cloud

设计重点:全面的微服务解决方案,强调微服务的易用性、和集成能力;

架构特点:涵盖服务注册与发现、API 网关、负载均衡、断路器、配置管理、链路追踪…..等。

Dubbo和SpringCloud区别详解(4大核心区别)-mikechen

适用场景:适合构建复杂的分布式系统,特别是需要丰富功能组件、和灵活配置的互联网应用。

总之,Dubbo 强调高性能的 RPC 调用、和灵活的服务治理,而 Spring Cloud 更注重全面的微服务生态、和灵活的组件集成。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法