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是其預設的序列化協議。