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
介面。 - 參數和回傳值不能自訂實現
List
、Map
、Number
、Date
、Calendar
等介面,只能使用 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)