1. 程式人生 > >30、dubbo都支援哪些通訊協議以及序列化協議?

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

1、面試題

dubbo支援哪些通訊協議?支援哪些序列化協議?

2、面試官心裡分析

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

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

3、面試題剖析

(1)dubbo支援不同的通訊協議

1)dubbo協議

dubbo://192.168.0.1:20188

預設就是走dubbo協議的,單一長連線,NIO非同步通訊,基於hessian作為序列化協議

適用的場景就是:傳輸資料量很小(每次請求在100kb以內),但是併發量很高

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

否則如果上億次請求每次都是短連線的話,服務提供者會扛不住。

而且因為走的是單一長連線,所以傳輸資料量太大的話,會導致併發能力降低。所以一般建議是傳輸資料量很小,支撐高併發訪問。

2)rmi協議

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

3)hessian協議

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

4)http協議

走json序列化

5)webservice

走SOAP文字序列化

dubbo的網路通訊協議.png

(2)dubbo支援的序列化協議

所以dubbo實際基於不同的通訊協議,支援hessian、java二進位制序列化、json、SOAP文字序列化多種序列化協議。但是hessian是其預設的序列化協議。

文集:https://www.jianshu.com/nb/32293473