Dubbo實現原理淺析

一、電商系統架構演進

1、單一應用架構

當網站規模很小時,採用單一應用框架,把所有的服務集中在一個應用中,但隨着網站規模增大,單一應用框架會越來越難維護。

2、垂直應用架構

把應用垂直的拆分開來,拆分成如支付、查詢等垂直模塊,每個模塊都有從頂層顯示層到底層數據持久層的業務邏輯,每個模塊都是一個獨立的子系統。雖然在一定程度上降低了開發成本和維護成本,但是會導致許多底層業務邏輯代碼的重複。

3、分佈式應用架構

把核心的業務抽離出來,作爲獨立的服務,供上層消費者調用。

這種架構就可以用到Dubbo框架,Dubbo是一個RPC(Remote Procedure Call Protocal)框架,用於實現SOA架構,在分佈式情況下可以遠程調用其他服務器暴露的方法。

二、Dubbo原理

1、如何做到透明化的調用遠程服務?

採用JDK動態代理技術或CGLib字節碼生成(asm)技術。一般都採用JDK動態代理,因爲代碼易維護。當調用生產者類的服務時,其實調用的是代理類的方法,代理類中執行了通信的業務邏輯,並且獲得最後的執行結果。

2、消息的數據結構

服務調用者請求消息:接口名、方法名、參數類型及參數值、超時時間、RequestID

服務生產者返回消息:返回值、狀態碼、RequestID

RequestID:因爲消息的發送與接收是異步的,爲了辨別返回的消息屬於哪個請求。

3、序列化方式

序列化就是將數據結構或對象轉化爲二進制串的過程,只有轉換成了二進制串才能進行網絡傳輸。

要考慮通用性、性能以及可擴展性。dubbo採用hessian。

4、通信方式

基於NIO。

5、發佈服務

ZooKeeper提供了服務的註冊於自動發現功能,服務提供者的增加、刪除對調用者來說是透明的。還提供心跳機制來檢測服務提供者是否還存在。


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