两者所解决的问题域不一样:Dubbo的定位始终是一款RPC框架,而Spring Cloud的目的是微 服务架构 下的一站式解决方案。 Spring Cloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。 核心要素 Dubbo Spring Cloud 服务注册中心 Zookeeper、 Redis Spring Cloud Netflix Eureka 服务调用方式 RPC REST API 服务网关 无 Spring Cloud 断路器 不完善 Spring Cloud Netiflix Hystrix 分布式配置 无 Spring Cloud Config 分布式追踪系 统 无 Spring Cloud Sleuth 消息总线 无 Spring Cloud Bus 数据流 无 Spring Cloud Stream 基于Redis,Kafka实现的消息微服 务 批量任务 无 Spring Cloud Task 严格来说,这两种方式各有优劣。虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避 免了上 面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖 只依靠一纸契 约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。
核心要素 | Dubbo | Spring Cloud |
服务注册中心 | Zookeeper、 Redis | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | REST API |
服务网关 | 无 | Spring Cloud |
断路器 | 不完善 | Spring Cloud Netiflix Hystrix |
分布式配置 | 无 | Spring Cloud Config |
分布式追踪系 统 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream 基于Redis,Kafka实现的消息微服 务 |
批量任务 | 无 | Spring Cloud Task |