1. 先说两者的相同点~
两者都是远程调用框架
2. 两者的不同
2.1 两者的模块组成:
-
Dubbo主要分为服务注册中心,服务提供者,服务消费者,还有管控中心;
-
相比起Dubbo简单的四个模块,SpringCloud则是一个完整的分布式一站式框架,他有着一样的服务注册中心,服务提供者,服务消费者,管控台,断路器,分布式配置服务,消息总线,以及服务追踪等;
2.2 在性能上来说
- 由于Dubbo底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化完成RPC。
- 而SpringCloud是基于Http协议+rest接口调用远程过程的,相对来说,Http请求会有更大的报文,占的带宽也会更多。
- Dubbo底层是Dubbo协议, 建立长连接, 注册中心是zk, 高一致,但不能高可用. 当主服务器挂掉后,zk可以保证备份节点一致性,但是备份服务器恢复成主服务需要2分钟左右,所以不能严格说是高可用
- Cloud是封装了boot, 而boot又是MVC封装而来的.而MVC底层是http协议, 注册中心是Eureka. 可以说Cloud是高可用但没有高一致.当主服务器挂掉后, 备份服务器能够马上变为主服务器,但是数据无法同步过来,容易造成数据丢失.