Hessian 協定

功能描述

Hessian 協定用於整合 Hessian 的服務。Hessian 底層使用 Http 通訊和 Servlet 暴露服務。Dubbo 預設內嵌 Jetty 作為伺服器實現。

Hessian 是 Caucho 的一個開源 RPC 框架,其通訊效率高於 WebService 和 Java 自帶的序列化。

  • 連線數:多連線
  • 連線方式:短連線
  • 傳輸協定:HTTP
  • 傳輸方式:同步傳輸
  • 序列化:Hessian 二進位序列化
  • 適用範圍:出入參資料包較大,提供者數量大於消費者數量,提供者壓力較大,可傳輸檔案。
  • 適用場景:頁面傳輸、檔案傳輸,或與原生 Hessian 服務互通。

Dubbo 的 Hessian 協定可以與原生 Hessian 服務互通,即

  • 提供者用 Dubbo 的 Hessian 協定暴露服務,消費者直接用標準 Hessian 介面呼叫,
  • 或者提供者用標準 Hessian 暴露服務,消費者用 Dubbo 的 Hessian 協定呼叫。

限制

  • 參數和回傳值需要實現 Serializable 介面。
  • 參數和回傳值不能自訂實現 ListMapNumberDateCalendar 等介面,只能使用 JDK 自帶的實現,因為 hessian 會做特殊處理,自訂實現會導致類別中所有屬性值丟失。

使用場景

Hessian 是一種基於 Binary-RPC 協定實現的輕量級 RPC 服務,用於序列化和反序列化物件實例。

使用方法

依賴關係

從 Dubbo 3 開始,Hessian 協定不再內嵌於 Dubbo 中,需要單獨引入一個獨立的 模組

<dependency>
    <groupId>org.apache.dubbo.extensions</groupId>
    <artifactId>dubbo-rpc-hessian</artifactId>
    <version>1.0.0</version>
</dependency>
<dependency>
    <groupId>com.caucho</groupId>
    <artifactId>hessian</artifactId>
    <version>4.0.7</version>
</dependency>

定義 Hessian 協定

<dubbo:protocol name="hessian" port="8080" server="jetty" />

設定預設協定

<dubbo:provider protocol="hessian" />

設定服務協定

<dubbo:service protocol="hessian" />

多埠

<dubbo:protocol id="hessian1" name="hessian" port="8080" />
<dubbo:protocol id="hessian2" name="hessian" port="8081" />

直接連線

<dubbo:reference id="helloService" interface="HelloWorld" url="hessian://10.20.153.10:8080/helloWorld" />

最後修改日期:2023 年 2 月 22 日:合併重構網站 (#2293) (4517e8c1c9c)