一、dubbo
的通讯协议
1
、dubbo
协议,是默认的基于TCP
传输协议的长连接,NIO
异步通信,适合于小数据量高并发的场景以及服务消费者机器数远大于服务提供者机器数的情况。
,不适合大文件,视频的传输
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO
异步传输
序列化:Hessian
二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K
),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo
协议传输大文件或超大字符串。
适用场景:常规远程服务方法调用
2
、RMI
协议
RMI
协议采用JDK
标准的java.rmi.*
实现,采用阻塞式短连接和JDK
标准序列化方式
Java
标准的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:TCP
传输方式:同步传输
序列化:Java
标准二进制序列化
适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
适用场景:常规远程服务方法调用,与原生RMI
服务互操作
3
、hession
协议
Hessian
协议用于集成Hessian
的服务,Hessian
底层采用Http
通讯,采用Servlet
暴露服务,Dubbo
缺省内嵌Jetty
作为服务器实现
基于Hessian
的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:Hessian
二进制序列化
适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。
适用场景:页面传输,文件传输,或与原生hessian
服务互操作
4
、Http
协议
采用Spring
的HttpInvoker
实现
基于http
表单的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:表单序列化(JSON
)
适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL
传入参数,暂不支持传文件。
适用场景:需同时给应用程序和浏览器JS
使用的服务。
5
、webservice
基于CXF
的frontend-simple
和transports-http
实现
基于WebService
的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:SOAP
文本序列化
适用场景:系统集成,跨语言调用。
6
、thrif
Thrift
是Facebook
捐给Apache
的一个RPC
框架,当前 dubbo
支持的 thrift
协议是对 thrift
原生协议的扩展,在原生协议的基础上添加了一些额外的头信息,比如service name
,magic number
等。Thrift
不支持null
值,不能在协议中传null
7
、redis
协议
8
、memcached
协议