1. 程式人生 > >dubbo的深入學習(2)

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進行處理。