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文本序列化
(2)dubbo支持的序列化協議
所以dubbo實際基於不同的通信協議,支持hessian、java二進制序列化、json、SOAP文本序列化多種序列化協議。但是hessian是其默認的序列化協議。
dubbo的網絡通信協議: