微服务框架有两大选择:Dubbo和SpringCloud,很多同学搞不清楚如何选择,以及两者的区别,本篇就重点详解Dubbo和SpringCloud区别@mikechen
核心设计不同
Dubbo 是阿里巴巴在 2011 年开源的 RPC(远程过程调用)框架,最初用于构建高性能、高吞吐量的分布式服务。
Spring Cloud 是基于 Spring Boot 开发的微服务框架,它结合了一系列的微服务工具,为开发者提供了构建分布式系统的完整解决方案。
比如,Eureka、Ribbon、Hystrix ….等来解决微服务相关的:服务注册与发现、以及负载均衡、熔断…等技术。
虽然,Dubbo最早定位为高性能RPC框架,但是随着近几年得到了重视、和重新投入,Dubbo 已经从原来的纯 RPC 框架,扩展为一整套微服务解决方案。
通信协议不同
Dubbo 主要用于企业内部系统,通常选择其原生的 Dubbo 协议,来实现高性能的服务间通信。
基于长连接和 NIO(非阻塞 IO)模型,使用自定义的二进制协议,进行高效的服务调用。
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 可实现简单的服务监控、和治理。
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 强调高性能的 RPC 调用、和灵活的服务治理,而 Spring Cloud 更注重全面的微服务生态、和灵活的组件集成。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》