7 什麼是dubbo

word發表於2022-07-18

什麼是dubbo

快速入門dubbo

瞭解什麼是dubbo之前,我們得先了解什麼是分散式系統?

  • 《分散式系統原理與範型》定義:
    • 分散式系統是若干獨立計算機的集合,這些計算機對於使用者來說就像單個相關係統
    • 分散式系統(distributed system)是建立在網路之上的軟體系統。
    • 簡單來說:多個(不同職責)人共同來完成一件事
    • 任何一臺伺服器都無法滿足淘寶的雙十一的資料吞吐量,一定是很多臺伺服器公共來完成
      的。(伺服器比做人)
  • 歇後語:“三個臭皮匠賽過諸葛亮”,就是分散式系統的真實寫照

系統架構的演變

1 單一應用架構

  • 當網站流量很小時,只需要一個應用,將所有的功能部署到一起(所有業務都放在一個tomcat
    裡),從而減少部署節點和成本;
  • 此時,用於簡化 增刪改查 工作量的資料訪問框架 (ORM)是關鍵;mybatis就是orm框架。ORM:物件關係對映(Object Relational Mapping)
  • 例如:某個超市的收銀系統,某個公司的員工管理系統
  • img

優點:

  • 小專案開發快 成本低
  • 架構簡單
  • 易於測試
  • 易於部署

缺點

  • 大專案模組耦合嚴重 不易開發 維護 溝通成本高
  • 新增業務困難
  • 核心業務與邊緣業務混合在一塊,出現問題互相影響

2 垂直應用架構

  • 當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成幾個互不相干的幾個應
    用,以提高效率;
  • 大模組按照mvc分層模式,進行拆分成多個互不相關的小模組,並且每個小模組都有獨立的伺服器
  • 此時,用於加速前端頁面開發的web框架(MVC)是關鍵;因為每個小應用都有獨立的頁面
    img

MVC:模型檢視控制器 (Model View Controller)

  • 缺點:
    • 模組之間不可能完全沒有交集,公用模組無法重複利用,開發性的浪費

3 分散式服務架構

  • 當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的業務,逐漸形成
    穩健的服務中心,使前端應用能更快速的響應多變的市場需求;
  • 此時,使用者提高業務複用及整合的分散式服務框架(RPC)遠端呼叫是關鍵;
    img

RPC:獨立的應用伺服器之間,要依靠RPC(Romote Procedure Call)才能呼叫

  • 這也會出現一個問題:當物流服務不忙,有100臺伺服器; 商品服務特別忙,也是100臺伺服器;
  • 如何做到資源優化調配?↓下面的流動計算架構能幫我們解決實際問題。

4 流動計算架構

  • 當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸呈現,此時需增加一個排程中心基於
    訪問壓力實時管理叢集容量,提高叢集利用率;
  • 此時,用於提高機器利用率的資源排程和治理中心(SOA)是關鍵;
    img

SOA:面向服務架構(Service-Oriented Architecture),簡單理解就是“服務治理”,例如:公交車站
的“排程員”

Dubbo簡介

  • Dubbo是分散式服務框架,是阿里巴巴的開源專案,現交給apache進行維護
  • Dubbo致力於提高效能和透明化的RPC遠端服務呼叫方案,以及SOA服務治理方案
  • 簡單來說,dubbo是個服務框架,如果沒有分散式的需求,是不需要用的

1 RPC

  • RPC【Remote Procedure Call】是指遠端過程呼叫,是一種程式間通訊方式

  • RPC基本的通訊原理

    1. 在客戶端將物件進行序列化
    2. 底層通訊框架使用netty(基於tcp協議的socket),將序列化的物件發給服務方提供方
    3. 服務提供方通過socket得到資料檔案之後,進行反序列化,獲得要操作的物件
    4. 物件資料操作完畢,將新的物件序列化,再通過服務提供方的socket返回給客戶端
    5. 客戶端獲得序列化資料,再反序列化,得到最新的資料物件,至此,完成一次請求
  • RPC兩個核心模組:通訊(socket),序列化。

    img

2 節點角色關係

節點 角色說明
Provider 服務的提供方(類似於洗浴中心)
Consumer 服務的消費方(客人)
Registry 服務註冊與發現的註冊中心(便民服務中心,所有的飯店娛樂場所都在已在本中心
註冊)
Monitor 監控服務的統計中心(統計服務被呼叫的次數)
Container 服務執行容器(燒烤一條街,洗浴一條街)

img

3 呼叫關係

1.服務容器負責啟動,載入,執行服務提供者;
2.服務提供者在啟動時,向註冊中心註冊自己提供的服務;
3.服務消費者在啟動時,向註冊中心訂閱自己所需的服務;
4.在註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給
消費者;
5.服務消費者,從提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,如果呼叫失敗,
再選另一臺呼叫;
6.服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中
心;

相關文章