dubbo的深入學習(2)

繼續上一篇寫了dubbo深入學習(1),主要介紹了dubbo是什麼、這一篇主要是寫dubbo能幹什麼?


2.dubbo能幹什麼?

當在小規模的服務的時候,應用通過RMI(遠程方法調用)和Hessian9(Hessian是一個輕量級的remoting onhttp工具,使用簡單的方法

提供了RMI的功能。)等工具,將一些服務進行簡單的暴露,然後配置一些相關的URL地址進行調用,通過F5等硬件進行負載均衡的調

就能達到我們的業務需求,但是,當我們的服務器越來越多的時候,如果還是通過配置URL的話,那樣數量就是一個大問題,而且

在代碼中配置的話,一個出錯了,整個程序都運行出錯,同時F5硬件負載均衡器的單點壓力也很大,那麼在這個時候,dubbo就

出現了,dubbo提供一個服務註冊中心,可以動態的註冊和發現服務,讓服務的位置透明瞭,消費者去獲取了服務提供方的地址,實

現軟載均衡,這樣就降低了F5硬件負載均衡器的以來,當然也減少了一些成本,而且dubbo的Monitor提供了對消費者和提供者之間

的一數據記錄,記錄了調用的次數,調用的時間等等一些信息,管理者可以根據次數和時間等信息判斷是否應該增加服務器臺數,

增加對風險的控制。此外Dubbo通過長連接(長連接:不發:rst包,不進行四次握手,等待在同域名下繼續用這個通道傳輸數據)

減少手,通過NIO及線程池在單連接上併發拼包處理消息,通過二進制流壓縮數據,比常規HTTP等短連接協議更快。


其實簡單來說就可以概括爲:

1.透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。

 
2.軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,降低成本,減少單點。 


3. 服務自動註冊與發現,不再需要寫死服務提供方地址,註冊中心基於接口名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。


在這裏呢,我在學習dubbo的時候我的導師給我說了幾個dubbo的重點優點,大概爲一下幾個方面


優點:

1.dubbo RPC中,同時支持多種序列化方式

序列化對於遠程調用的響應速度,網絡帶寬消耗等起着重要的作用,是提高分佈式系統性能的關鍵因素之一,目前有一下四中序列化方式
  1.         dubbo序列化:阿里尚未開發成熟的高效java序列化實現,阿里不建議在生產環境使用它
  2.         hessian2序列化:hessian是一種跨語言的高效二進制序列化方式。但這裏實際不是原生的hessian2序列化,而是       阿里修改過的hessian lite,它是dubbo RPC默認啓用的序列化方式
  3.         json序列化:目前有兩種實現,一種是採用的阿里的fastjson庫,另一種是採用dubbo中自己實現的簡單json庫,       但其實現都不是特別成熟,而且json這種文本序列化性能一般不如上面兩種二進制序列化。
  4.         java序列化:主要是採用JDK自帶的Java序列化實現,性能很不理想。


2.基於長連接的NIO框架抽象封裝

這是dubbo官方給出的dubbo協議dubbo協議(注:dubbo支持多協議),通過使用長連接減少握手,通過NIO及線程池在單連

接上併發拼包處理消息,通過二進制流壓縮數據,比常規HTTP等短連接協議更快,適合小數據量大併發的服務調用


基於NIO的非阻塞實現並行調用,客戶端不需要啓動多線程即可完成並行調用多個遠程服務,相對多線程開銷較小 


3.   個支持異步調用的RPC框架


  異步IO。當代碼需要執行一個耗時的IO操作時,它只發出IO指令,並不等待IO結果,然後就去執行其他代碼了。一段時間後,

       

        當IO返回結果時,再通知CPU進行處理。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章