关注△mikechen的架构笔记△,十余年BAT架构经验倾囊相授
大家好,我是mikechen。
SpringCloud和Dubbo是目前主流的微服务框架,但是很多同学还不清楚如何选择?核心区别?本篇重点详解两者核心区别@mikechen
最新mikechen原创超30万字《阿里架构师进阶专题合集》和《最全大厂面试题及答案总结》,请关注本公众号【mikechen的架构笔记】,后台回复:资料,即可领取。
核心设计区别
Dubbo最早是阿里"B2B"开发的一个RPC框架,初衷就是解决阿里"B2B"内部的通信问题。
从最早的设计,本身就是奔着“远程通信”去的,所以到现在为止,很多人的印象还是“RPC”。
只不过随着企业内部的需要,逐步看是完善整个“微服务”体系,从而走到今天。
但是,SpringCloud从最早的设计,就是奔着“全套微服务去的”。
而且,更取巧的是,SpringCloud最早就基于SpringBoot来开发。
所以,非常适合Spring这套体系,因为开发生态非常完善,最重要的是,群众基础多。
所以,Spring Cloud 是基于 Spring Boot ,开发了一个全生态微服务解决方案。
Spring Cloud不仅仅是一个 RPC 框架,还包含了:服务发现、配置管理、负载均衡、API 网关、断路器、分布式追踪。。。。。等完整的微服务体系。
服务通信的区别
Dubbo基于RPC(Remote Procedure Call)模型,强调高性能、低延迟的远程调用。
Dubbo使用Dubbo协议,这是一个高效的二进制传输协议。
相比于基于文本的HTTP协议,二进制协议在传输速度/和数据压缩率上具有显著优势,尤其适合高并发、和低延迟的场景。
Spring Cloud基于HTTP/REST模型,构建在Spring生态系统之上,更加语言无关。
public interface UserClient {
User getUserById(Long id);
}
HTTP 是一种广泛使用的标准协议,RESTful 风格的 API 更是得到了广泛的接受和支持。
几乎所有的编程语言、和平台都原生支持 HTTP 通信,使得跨平台、和跨语言的服务交互变得非常容易。
但是,相比于其他协议(如 Dubbo、gRPC、Thrift...等等),HTTP/REST 的通信开销较大。
总之,性能和通用,本就是取舍,所以,选择合适的通信方式,应根据具体业务需求、和场景来决定。
服务治理的区别
Dubbo专注于服务通信、服务治理、负载均衡....等核心功能。
Dubbo主要集中在服务层面,相对于SpringCloud的生态会差一点。
但是,现在也提供了SpringCloudAlibaba来弥补。
而Spring Cloud,相对于Dubbo,拥有更完整的微服务生态系统。
比如:包括配置管理(Spring Cloud Config)、熔断器(Hystrix)、服务网关(Zuul)、分布式追踪(Sleuth + Zipkin)、消息驱动(Spring Cloud Stream).....等。
但是,这些组件,有一部分已经停止了更新。
所以,需要考虑综合的情况,来选择和决定。
如果要走SpringCloud系列,国内可以采用SpringCloudAlibaba来替换。
核心应用区别
Dubbo:非常适合企业内部的高并发服务调用场景,尤其是在需要高性能、低延迟的场景下。
其二进制协议、和高效的 RPC 机制,使其在这方面有显著优势。
Spring Cloud 更适合构建全面的、企业级的微服务架构,尤其是需要广泛的服务治理、配置管理、监控、API 网关。。。等功能。
Spring Cloud,更加适合中型企业,特别是那些已经在使用 Spring 生态系统的团队。
Spring Cloud,相对于大厂,不需要定制化开发微服务框架,生态也还不错。
Dubbo 则更适合注重高性能、和低延迟的大规模并发场景,尤其是在内部服务调用。
以上
最后送大家一个福利:
送我原创超30万字阿里架构师进阶专题合集。
以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。
需要以上架构专题&面试答案的同学,加我微信即可领取!
添加时备注:资料