dubbo協議

簡介

dubbo協議是dubbo默認的協議,它的特點如下:

  1. 連接個數:單連接

  2. 連接方式:長連接

  3. 傳輸協議:TCP

  4. 傳輸方式:NIO異步傳輸

  5. 序列化:Hessian二進制序列化

  6. 適用范圍:傳入傳出參數數據包較小(建議小于100K),消費者比提供者個數多,單一消費者無法壓滿提供者,盡量不要用dubbo協議傳輸大文件或超大字符串。

  7. 適用場景:常規遠程服務方法調用

Dubbo 協議采用經典定長包頭+變長包體的協議設計,包頭記錄了數據的序列化方式,請求狀態,數據長度等信息,包體是請求/響應對象序列化后的二進制數據。格式見下圖


字段說明:2字節short類型的Magic 1字節的消息標志位 5位序列化id 1位心跳還是正常請求 1位雙向還是單向 1位請求還是響應 1字節的狀態位 8字節的消息id 4字節數據長度

網絡傳輸層傳輸的就是這種二進制數據,基本流程如下


源碼走讀

  1. request編碼


    ExchangeCodec類
  2. request解碼(DecodeableRpcInvocation.decode())

  3. response編碼(DubboCodec.encodeResponseData())

  4. request解碼(DecodeableRpcResult.decode())

關于更多dubbo支持的RPC協議大家可以參考這篇文章

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。