1. 程式人生 > >Dubbo 支援哪些序列化協議?

Dubbo 支援哪些序列化協議?

面試題

dubbo 支援哪些通訊協議?支援哪些序列化協議?說一下 Hessian 的資料結構?PB 知道嗎?為什麼 PB 的效率是最高的?

面試官心理分析

上一個問題,說說 dubbo 的基本工作原理,那是你必須知道的,至少要知道 dubbo 分成哪些層,然後平時怎麼發起 rpc 請求的,註冊、發現、呼叫,這些是基本的。

接著就可以針對底層進行深入的問問了,比如第一步就可以先問問序列化協議這塊,就是平時 RPC 的時候怎麼走的?

面試題剖析

序列化,就是把資料結構或者是一些物件,轉換為二進位制串的過程,而反序列化是將在序列化過程中所生成的二進位制串轉換成資料結構或者物件的過程。

serialize-deserialize

dubbo 支援不同的通訊協議

  • dubbo 協議

預設就是走 dubbo 協議,單一長連線,進行的是 NIO 非同步通訊,基於 hessian 作為序列化協議。使用的場景是:傳輸資料量小(每次請求在 100kb 以內),但是併發量很高。

為了要支援高併發場景,一般是服務提供者就幾臺機器,但是服務消費者有上百臺,可能每天呼叫量達到上億次!此時用長連線是最合適的,就是跟每個服務消費者維持一個長連線就可以,可能總共就 100 個連線。然後後面直接基於長連線 NIO 非同步通訊,可以支撐高併發請求。

長連線,通俗點說,就是建立連線過後可以持續傳送請求,無須再建立連線。

dubbo-keep-connection

而短連線,每次要傳送請求之前,需要先重新建立一次連線。

dubbo-not-keep-connection

  • rmi 協議

走 Java 二進位制序列化,多個短連線,適合消費者和提供者數量差不多的情況,適用於檔案的傳輸,一般較少用。

  • hessian 協議

走 hessian 序列化協議,多個短連線,適用於提供者數量比消費者數量還多的情況,適用於檔案的傳輸,一般較少用。

  • http 協議

走 json 序列化。

  • webservice

走 SOAP 文字序列化。

dubbo 支援的序列化協議

dubbo 支援 hession、Java 二進位制序列化、json、SOAP 文字序列化多種序列化協議。但是 hessian 是其預設的序列化協議。

說一下 Hessian 的資料結構

Hessian 的物件序列化機制有 8 種原始型別:

  • 原始二進位制資料
  • boolean
  • 64-bit date(64 位毫秒值的日期)
  • 64-bit double
  • 32-bit int
  • 64-bit long
  • null
  • UTF-8 編碼的 string

另外還包括 3 種遞迴型別:

  • list for lists and arrays
  • map for maps and dictionaries
  • object for objects

還有一種特殊的型別:

  • ref:用來表示對共享物件的引用。

為什麼 PB 的效率是最高的?

可能有一些同學比較習慣於 JSON or XML 資料儲存格式,對於 Protocol Buffer 還比較陌生。Protocol Buffer 其實是 Google 出品的一種輕量並且高效的結構化資料儲存格式,效能比 JSONXML 要高很多。

其實 PB 之所以效能如此好,主要得益於兩個:第一,它使用 proto 編譯器,自動進行序列化和反序列化,速度非常快,應該比 XML 和 JSON 快上了 20~100 倍;第二,它的資料壓縮效果好,就是說它序列化後的資料量體積小。因為體積小,傳輸起來頻寬和速度上會有優化。

免費Java資料需要自己領取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高併發分散式等教程,一共30G。 
傳送門: https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q

相關推薦

Dubbo 支援哪些序列協議

面試題 dubbo 支援哪些通訊協議?支援哪些序列化協議?說一下 Hessian 的資料結構?PB 知道嗎?為什麼 PB 的效

30、dubbo支援哪些通訊協議以及序列協議

1、面試題 dubbo支援哪些通訊協議?支援哪些序列化協議? 2、面試官心裡分析 上一個問題,說說dubbo的基本工作原理,那是你必須知道的,至少知道dubbo分成哪些層,然後平時怎麼發起rpc請求的,註冊、發現、呼叫,這些是基本的。 接著就可以針對底層進行深入的問問了,比如第一步就

主流序列協議優缺點對比和開發必備網站

較差 lln 優缺點 定位屬性 大小 tps all book 開發環境 主流序列化協議優缺點和網站推薦 JSON 優點 1 簡單易用開發成本低2 跨語言3 輕量級數據交換4 非冗長性(對比xml標簽簡單括號閉環) 缺點 1 體積大,影響高並發2 無版本檢查,自己做兼容3

Protobuf 序列協議詳解

Protocol Buffers是Google開發一種資料描述語言,能夠將結構化資料序列化,可用於資料儲存、通訊協議等方面。據Google官方文件介紹,現在Google內部已經有48,162個訊息型別定義在12,183個proto檔案中。本文會從快速入門、語言規範、編碼協議、效能評估等幾個方面對Pr

JAVA RPC (三) 之thrift序列協議入門雜談

首先抱歉讓大家久等了,最近工作的原因,再加上自己維護koalas rpc利用的大部分時間,一直沒騰出空來寫這篇文章。 先放出來自研的企業級RPC框架原始碼地址,上面有使用方式和部署環境說明,說環境部署,其實只需要傻瓜式的安裝一個zookeeper就可以了。 地址:https://gitee.com/a12

hessian原理解析三(序列協議)

1、序列化   序列化:將資料結構或物件轉換成二進位制串的過程   反序列化:將在序列化過程中所生成的二進位制串轉換成資料結構或者物件的過程       目的:儲存物件狀態或用於網路傳輸 2、hessian 序列化協議 1.0 參考官方文件:http://hessian.c

幾種序列協議(protobuf,xstream,jackjson,jdk,hessian)相關資料對比

對比了一下json,xml,java序列化相關的資料對比,從幾個緯度進行對比。 測試緯度 序列化時間反序列化時間bytes大小 測試程式碼 準備protobuf檔案 Message.proto檔案程式碼  

31、dubbo支援哪些負載均衡、高可用以及動態代理的策略?

1、面試題 dubbo負載均衡策略和叢集容錯策略都有哪些?動態代理策略呢? 2、面試官心裡分析 繼續深問吧,這些都是用dubbo必須知道的一些東西,你得知道基本原理,知道序列化是什麼協議,還得知道具體用dubbo的時候,如何負載均衡,如何高可用,如何動態代理。 說白了,就是看你對du

物聯網閘道器目前支援哪些雲通訊協議

1、邁思德格式。      採用UDP格式傳輸。 2、MQTT。       採用TCP格式傳輸。 3、MODBUS-TCP。      閘道器通過TCP連線雲伺服器,連線後傳送MAC地址或者從站號,

dubbo 支援的7種協議

Dubbo支援dubbo、rmi、hessian、http、webservice、thrift、redis等多種協議,但是Dubbo官網是推薦我們使用Dubbo協議的。 下面我們就針對Dubbo的每種協議詳解講解,以便我們在實際應用中能夠正確取捨。

android 支援序列-------Serializable和Parcelble

android 支援兩種序列化:Serializable和Parcelble。前者是Java語言自帶的序列化機制,通過讀寫檔案實現物件的序列化和反序列化;後者是Android Os實現的序列化,它是通過讀寫記憶體來實現序列化,從而實現物件的傳遞。下面,就這兩種方式詳細說明。 Serializable S

一文徹底理解Redis序列協議,你也可以編寫Redis客戶端

前提 最近學習Netty的時候想做一個基於Redis服務協議的編碼解碼模組,過程中順便閱讀了Redis服務序列化協議RESP,結合自己的理解對文件進行了翻譯並且簡單實現了RESP基於Java語言的解析。編寫本文的使用使用的JDK版本為[8+]。 RESP簡介 Redis客戶端與Redis服務端基於一個稱作RE

Protocol buffer序列及其在微信藍牙協議中的應用

number mil 組成 表現 emd 設置 數值 面數據 開發流程 Protocol buffer是Google出品的一種輕便高效的結構化數據存儲格式。可對結構化數據進行序列化,並具有語言無關、平臺無關等特點。在通信協議和數據存儲等領域已經得到廣泛的應

RPC服務框架dubbo(三):Dubbo支援協議

1.Dubbo 1.1 Dubbo官方推薦的協議. 1.2 本質:使用NIO和執行緒池進行處理. 1.3 缺點:大檔案傳輸時可能出現檔案傳輸失敗問題. 2.RMI 2.1 JDK提供的協議,遠端方法呼叫協議. 2.2 缺點:偶爾連線失敗. 2.3 優點:JDK原生,不需要進行額外配置(匯入jar

序列支援 4 —Boost的序列庫的強大之處

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Dubbo支援協議及講解

Dubbo支援dubbo、rmi、hessian、http、webservice、thrift、redis等多種協議,但是Dubbo官網是推薦我們使用Dubbo協議的。下面我們就針對Dubbo的每種協議詳解講解,以便我們在實際應用中能夠正確取捨。 dubbo協議 預設協議,使用基於mina1

通訊協議序列

轉載地址:blog.chinaunix.net/uid-27105712-id-3266286.html   通訊協議之序列化   通訊協議可以理解兩個節點之間為了協同工作實現資訊交換,協商一定的規則和約定,例如規定位元組序,各個欄位型別,使用什麼壓縮演算法或加密

什麼是Java序列?為什麼序列序列哪些方式?

  先普及一下,計算機中無法識別一個基本單元【位元組】來表示,必須經過“翻譯”才能讓計算機理解人類的語言,這個翻譯過程就是【編碼】,通常所說的字元轉換為位元組。  有I/O的地方機就會涉及編碼,現在幾乎所有的應用程式都涉及網路I/O和磁碟I/O,而資料傳輸時都是以位元組為單位的,所以所有的資料都必

記一道集PHP偽協議&PHP反序列綜合運用的CTF

首先拿到題目後,毫無疑問,檢視一下原始碼 <!-- $user = $_GET["txt"]; $file = $_GET["file"]; $pass = $_GET["password"]; if

關於資料序列(4)自定義序列的實現,支援常用集合框架

下面的示例很好的揭示瞭如何實現自定義序列化的方法。 支援byte, byte[], boolean, boolean[], int, int[], long, long[] ,double ,double[], String, String[], 以及Enum, List,Map兩種包