Dubbo(一)—— 通過軟件架構發展史對SOA面向服務、Dubbo框架理解

Dubbo(一)—— 軟件架構發展史、SOA面向服務、Dubbo框架原理

1.軟件架構發展史

  • All In One架構(簡單單體模式)

  • 如下圖,所有的模塊都在Service.java類中,包括數據訪問代碼,控制跳轉代碼,業務處理代碼等。

  • 優缺點對比

  • 優點 將所有的代碼都放在一個項目中,這樣研發團隊的任何一個人都可以隨時修改任意的一段代碼,或者增加一些新的代碼。這種方式對於一個新團隊的創立初期,最短時間推向市場,可省去各種額外的設計,直接上手幹活,爭取了時間,因而是非常有意義的。

All In One架構

  • 缺點 AllInOne架構的系統如果變更需求對部署影響非常大,每次發佈的部署單元就是一個新版本的整個系統,系統內的任何業務邏輯調整都會導致整個系統的重新打包,部署、停機、再重啓,進而導致了系統的停機發布時間較長

  • 每次發佈上線都是生產系統的重大變更,這種部署模式大大提升了系統風險,降低了系統的可用性

  • MVC/三層架構

  • MVC 也是一個非常常見的 3 層(3-Tier)結構架構模式,它把每個模塊劃分爲模型層(Model Layer)、視圖層(View Layer)、控制器層(Controller Layer)等部分。
    MVC/三層架構
    優點 簡單,直觀,可以非常有效的上手;把系統拆解爲一個個的小單元,有利於分配開發工作;根據不同的模塊和分層結構,可以把系統拆分成多個不同的子項目;提高了軟件開發效率。
    缺點 基於單體架構下的 MVC 模式依然解決不了單體架構本身存在的問題,特別是對於可用性和擴展性的影響。
    MVC 模式也存在定義不夠明確,對於簡單的業務場景拆解過細導致複雜度增加等問題。
    所有代碼仍然在同一臺計算機中運行,併發能力有限

  • RPC(Remote Procedure Call)—遠程過程調用

  • RPC遠程過程調用架構
    遠程過程調用流程圖
    優點簡單;高效,通用。使用RPC可以讓一個項目部署到多個不同的計算機中去。讓構建分佈式計算(應用)更容易,在提供強大的遠程調用能力時不損失本地調用的語義簡潔性。
    缺點:此種模式的IP地址和端口號較亂,有一定的維護難度

  • 補充:RPC框架的核心技術點:服務暴露、遠程代理對象,通信

  • SOA(Service-Oriented Architecture)—面向服務的架構

  • SOA面向服務架構

  • 將每臺服務端的IP地址和端口號全部註冊到註冊中心中去,方便客戶端調用。

  • 註冊中心可以使用zookeeper工具。

  • Dubbo就是基於SOA的一種架構。

2.SOA定義

  • SOA(Service-Oriented Architecture),中文全稱:面向服務的架構。

    SOA 是一種粗粒度、鬆耦合服務架構,服務之間通過簡單、精確定義接口進行通訊,不涉及底層編程接口和通訊模型。

    SOA 是一種思想,一種方法論,一種分佈式的服務架構。

SOA用途

  • SOA解決多服務凌亂問題,SOA架構解決數據服務的複雜程度,同時SOA又有一個名字,叫做服務治理

SOA基本特徵

  • 可從外部訪問 隨時可用 粗粒度的服務接口分級 鬆散耦合 可重用的服務
  • 服務接口設計管理 標準化的服務接口 支持各種消息模式 精確定義的服務契約

3.Dubbo架構原理圖

Dubbo架構原理
Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務註冊與發現的註冊中心。
Monitor: 統計服務的調用次調和調用時間的監控中心。
Container: 服務運行容器,常見的容器有Spring容器。

調用關係說明:

  1. 服務容器負責啓動,加載,運行服務提供者。
  2. 服務提供者在啓動時,向註冊中心註冊自己提供的服務。
  3. 服務消費者在啓動時,向註冊中心訂閱自己所需的服務。
  4. 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
  5. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
  6. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心Monitor。
發佈了2 篇原創文章 · 獲贊 1 · 訪問量 149
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章