Dubbo-通信协议
通过Dubbo的hello world,最让人好奇的是它是如何通信的,毕竟和我们常见的http太不一样了!
一、官网上是怎么说的
-
-
推荐使用Dubbo协议,一共有9中协议。官网给了非常明确的答复。
二、9种协议
为了节约时间,看一下网上对着9中协议的总结参考
-
dubbo://
-
Dubbo缺省协议采用单一长连接和NIO异步通讯,适用于小数据量大并发的服务调用,以及服务消费者机器远大于服务提供者机器数量的情况。
-
序列化:Hessian二进制序列化
-
传输协议TCP
-
-
rest://
- 基于标准的Java REST API实现的REST调用支持
- rest风格的http
-
http://
-
采用Spring的HttpInvoker实现
-
多连接、短连接
-
传输协议Http、同步
-
序列化:json
-
适用场景:数据包大小混合,提供者比消费者个数多,不支持传文件
-
-
hessian://
-
hessian协议用于集成hessian的服务
-
多连接、短连接
-
传输协议Http、同步
-
序列化:Hessian二进制序列化
-
适用范围:数据包较大,提供者比消费者多,可传文件,或与hessian服务交互
-
-
redis://
- 用redis实现注册中心
-
thrift
- The current dubbo support thrift protocol is an extension of the thrift native protocol, adding some additional header information to the native protocol, such as service name, magic number, and so on.
-
memcached
- 用memcached实现注册中心
-
rmi://
- RMI协议采用jdk标准的java.rmi.*实现,采用阻塞式短连接和JDK标准序列化方式
- 传输协议TCP
- 同步传输
- 序列化:java标准二进制序列化
- 适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
-
webservice
- 基于webservice的远程调用协议
- 多连接、短连接
- 传输协议Http,同步传输
- 序列化:SOAP文本序列化
- 适用场景:系统集成,跨语言调用