spring cloud和dubbo的主要区别
2019-12-01 本文已影响0人
Djbfifjd
一、注册中心
1️⃣spring cloud:有注册中心eureka
2️⃣Dubbo:没有,用第三方的zookeeper
二、通讯协议
1️⃣Dubbo
Dubbo:使用 RPC 通讯协议,提供序列化方式如下:
Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
RMI:RMI 协议采用 JDK 标准的 java.rmi.* 实现,采用阻塞式短连接和 JDK 标准序列化方式。
Hessian:Hessian 协议用于集成 Hessian 的服务,Hessian 底层采用 HTTP 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现。
HTTP:采用 Spring 的 Http Invoker 实现。
Webservice:基于 CXF 的 frontend-simple 和 transports-http 实现。
2️⃣Spring Cloud
Spring Cloud 使用 HTTP 协议的 REST API。@fengin 调用dubbox(基于Dubbo的开源扩展)中增加了对REST支持的原因之一。
Spring Cloud组件运行:
- 所有请求都统一通过 API 网关(Zuul)来访问内部服务。
- 网关接收到请求后,从注册中心(Eureka)获取可用服务。
- 由 Ribbon 进行均衡负载后,分发到后端的具体实例。
- 微服务之间通过 Feign 进行通信处理业务。
点评:业务部署方式相同,都需要前置一个网关来隔绝外部直接调用原子服务的风险。
Dubbo 需要自己开发一套 API 网关,而 Spring Cloud 则可以通过 Zuul 配置即可完成网关定制。Spring Cloud 组件完整。