1. 程式人生 > >dubbo原理(粗糙版)

dubbo原理(粗糙版)

菜雞在面試的時候經常被問到會dubbo嗎?所以開始學習dubbo
我計劃分為三章:
第一章:dubbo框架的架構(簡略說)
第二章:dubbo框架的具體知識以及底層原理
第三章:dubbo框架的應用實戰


這是第一章

1.什麼是dubbo框架?
官網給的解釋是dubbo框架是一個遠端呼叫框架(rpc),什麼是遠端呼叫框架呢?
簡單來說指的就是不在一個伺服器上的模組之間進行呼叫。隨著資料量的增大,系統不可能將所有程式碼部署到一個伺服器中,一旦這個伺服器宕機的話,整個系統就會崩潰,所以出現了叢集部署,簡而言之就是說多買幾個伺服器,每個伺服器上部署的都是相同的程式碼,這樣一來即使有一個伺服器宕機的話,因為有其他伺服器的存在,還是可以繼續執行的,那麼叢集部署是如何決定訪問哪一個伺服器的呢?通過負載均衡來決定訪問哪一臺伺服器,在這裡說一個小的知識點,我會另外開一篇文章介紹叢集部署下的session共享問題,但我們都知道,系統的版本迭代是很快的,一旦系統更新,所有伺服器都要更新,這還是不完美的,所以出現了垂直拆分結構,也就是分散式框架


2.分散式框架好幾個,為什麼選擇dubbo?
dubbo中間傳輸的是二進位制資料,所以序列化傳輸效率高
簡單流程:將物件序列化為二進位制資料-socket網路傳輸–>反序列化為物件


3.dubbo原理簡單解析:
1.如何建立兩臺伺服器之間的關係?(consumer如何呼叫provider)
我們傳統的實現方法:1.注入物件自動掃描
2.配置類的實現類在哪
顯然都是不行的,那我們如何操作呢?
1.通過反射和動態代理避免產生新物件
2.遠端查詢服務暴露方:spring通過自動掃描註解將類實現全部new出來放到本地map集合中,key裝註解的引數,value裝物件,將本地map註冊到服務註冊中心(Zookeeper)
3.通過Socket(netty)獲取例項物件
4,反序列化,注入物件