1. 程式人生 > >Dubbo(三) -- 多協議支持

Dubbo(三) -- 多協議支持

cached list 大並發 服務器 服務提供者 小數 效率 blog 詳細

一、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(三) -- 多協議支持