首页 > 代码库 > Dubbo(三) -- 多协议支持

Dubbo(三) -- 多协议支持

一、Dubbo支持的协议

  Dubbo协议、Hessian协议、HTTP协议、RMI协议、WebService协议、Thrift协议、Memcached协议、Redis协议

二、协议简介

  详细参考:http://blog.csdn.net/songjinbin/article/details/49498431

  1.Dubbo协议

     Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。Dubbo缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

  2.Hessian协议

   Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现。Hessian是Caucho开源的一个RPC框架:http://hessian.caucho.com,其通讯效率高于WebService和Java自带的序列化。

     基于Hessian的远程调用协议:

    • 连接个数:多连接
    • 连接方式:短连接
    • 传输协议:HTTP
    • 传输方式:同步传输
    • 序列化:Hessian二进制序列化
    • 适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。
    • 适用场景:页面传输,文件传输,或与原生hessian服务互操作

  3.HTTP协议

   此协议采用spring 的HttpInvoker的功能实现,

    • 连接个数:多个
    • 连接方式:长连接
    • 连接协议:http
    • 传输方式:同步传输
    • 序列化:表单序列化
    • 适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
    • 适用场景:需同时给应用程序和浏览器JS使用的服务。

  4.RMI协议

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

   Java标准的远程调用协议:  

    • 连接个数:多连接
    • 连接方式:短连接
    • 传输协议:TCP
    • 传输方式:同步传输
    • 序列化:Java标准二进制序列化
    • 适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
    • 适用场景:常规远程服务方法调用,与原生RMI服务互操作

三、在Dubbo中配置

  1.

 

Dubbo(三) -- 多协议支持