【Dubbo】通信协议

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Francis123580/article/details/82290995

dubbo://

Dubbo 缺省协议,采用单一长连接和 NIO 异步通讯

适用场景

  • 适合:常规远程服务方法调用,小数据量(< 100K)大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况

  • 不适合:传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

特性

  1. 单连接 、长连接 、TCP协议
  2. NIO异步传输 、 Hessian二进制序列化

rmi://

RMI 协议,采用 JDK 标准的 java.rmi.* 实现,采用阻塞式短连接和 JDK 标准序列化方式

适用场景

  • 常规远程服务方法调用,与原生RMI服务互操作

  • 传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件

特性

  1. 多连接 、 短连接 、TCP协议
  2. 同步传输 、 Java标准二进制序列化

hessian://

Hessian协议,用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现。

适用场景

  • 传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件
  • 页面传输,文件传输,或与原生hessian服务互操作

特性

  1. 多连接 、 短连接 、 HTTP协议
  2. 同步传输 、 Hessian二进制序列化

http://

基于 HTTP 表单的远程调用协议,采用 Spring 的 HttpInvoker 实现

适用场景

  • 传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件
  • 需同时给应用程序和浏览器 JS 使用的服务

特性

  1. 多连接 、 短连接 、HTTP协议
  2. 同步传输 、 表单序列化

webservice://

基于 WebService 的远程调用协议,基于 Apache CXF 的 frontend-simple 和 transports-http 实现

适用场景

  • 系统集成,跨语言调用

特性

  1. 多连接 、 短连接 、 HTTP协议
  2. 同步传输 、 SOAP文本序列化

thrift://

当前 dubbo 支持的thrift 协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信息

memcached://

基于 memcached 实现的 RPC 协议

redis://

基于 Redis [1] 实现的 RPC 协议

rest://

基于标准的Java REST API——JAX-RS 2.0 实现的REST调用支持

小结

Dubbo默认通信协议是dubbo,是单一长连接NIO异步传输的,解决了大并发小数据量的常规服务调用,防止C10K问题

如果需要传文件,可以用Hessian;需要页面也调用的,用http;需要跨语言调用的,用webservice;这几个都是多连接短连接形式的

猜你喜欢

转载自blog.csdn.net/Francis123580/article/details/82290995