两者都是现在主流的微服务框架,但却存在不少差异:
SpringCloud生态丰富,功能完善,更像是品牌机,Dubbo则相对灵活,可定制性强,更像是组装机。相关资料:
SpringCloud:Spring公司开源的微服务框架,SpirngCloud 定位为微服务架构下的一站式解决方案。
Dubbo:阿里巴巴开源的RPC框架,Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断
SpringCloud 和 Dubbo 先看一个区别表
Dubbo | SPRING CLOUD | |
---|---|---|
服务器注册中心 | Zookeeper | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | REST API |
服务监控 | Dubbo-monitor | Spring Boot Admin |
断路器 | 不完善 | Spring Cloud Netflix Hystrix |
服务网关 | 无 | Spring Cloud Netflix Zuul |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
最大的区别 Dubbo采用自定义的Dubbo协议实现远程通信,是一种典型的RPC调用方案,而SpringCloud中使用的Feign是基于Rest风格的调用方式。
REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
Rest的风格可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
因此请求和想要过程只要遵循http协议即可,更加灵活
SpringCloud中的Feign就是Rest风格的调用方式。
Remote Procedure Call,远程过程调用,就是像调用本地方法一样调用远程方法。 RPC一般要确定下面几件事情:
数据传输方式:多数RPC框架选择TCP作为传输协议,性能比较好。 数据传输内容:请求方需要告知需要调用的函数的名称、参数、等信息。 序列化方式:客户端和服务端交互时将参数或结果转化为字节流在网络中传输,那么数据转化为字节流的或者将字节流转换成能读取的固定格式时就需要进行序列化和反序列化 因为有序列化和反序列化的需求,因此对数据传输格式有严格要求,不如Http灵活
Dubbo协议就是RPC的典型代表。
Dubbo | Feign (Http调用) | |
---|---|---|
传输协议 | TCP | TCP |
开发语言 | Java | 不限 |
性能 | 好 | 一般 |
灵活性 | 一般 | 好 |
https://zhuanlan.zhihu.com/p/468001033
https://zhuanlan.zhihu.com/p/70024154
You must be logged in to post a comment.
可以尝试一下springcloud alibaba