一、Dubbo——簡介

1背景
1)分佈式系統
《分佈式系統原理與範型》定義:“分佈式系統是若干獨立計算機的集合,這些計算機對於用戶來說就像單個相關係統”。分佈式系統(distributed system)是建立在網絡之上的軟件系統。

隨着互聯網的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分佈式服務架構以及流動計算架構勢在必行,亟需一個治理系統確保架構有條不紊的演進。

2)發展演變
在這裏插入圖片描述

(1)單一應用架構
當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。此時,用於簡化增刪改查工作量的數據訪問框架(ORM)是關鍵。

在這裏插入圖片描述
適用於小型網站,小型管理系統,將所有功能都部署到一個功能裏,簡單易用。
缺點: 1、性能擴展比較難 ;2、協同開發問題; 3、不利於升級維護

(2)垂直應用架構
當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。此時,用於加速前端頁面開發的Web框架(MVC)是關鍵。

在這裏插入圖片描述
通過切分業務來實現各個模塊獨立部署,降低了維護和部署的難度,團隊各司其職更易管理,性能擴展也更方便,更有針對性。
缺點: 公用模塊無法重複利用,開發性的浪費,應用不可能完全獨立,大量的應用之間需要交互,界面+業務邏輯的實現分離

(3)分佈式服務架構
當垂直應用越來越多,應用之間交互不可避免,將核心業務抽取出來,作爲獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用於提高業務複用及整合的分佈式服務框架(RPC)是關鍵。
在這裏插入圖片描述
(4)流動計算架構
當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個調度中心基於訪問壓力實時管理集羣容量,提高集羣利用率。此時,用於提高機器利用率的資源調度和治理中心(SOA)[ Service Oriented Architecture]是關鍵。
在這裏插入圖片描述

2、dubbo核心概念
1)RPC
RPC【Remote Procedure Call】是指遠程過程調用,是一種進程間通信方式,他是一種技術的思想,而不是規範。它允許程序調用另一個地址空間(通常是共享網絡的另一臺機器上)的過程或函數,而不用程序員顯式編碼這個遠程調用的細節。即程序員無論是調用本地的還是遠程的函數,本質上編寫的調用代碼基本相同。

RPC基本原理
在這裏插入圖片描述
客戶端與服務的建立連接併發送消息
服務的反饋結果

在這裏插入圖片描述

RPC兩個核心模塊:通訊,序列化。

2)Dubbo簡介
Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。
官網:http://dubbo.apache.org/

3)基本概念

在這裏插入圖片描述
init:初始化時執行
sync:同步執行
async:異步執行

(1)服務提供者(Provider):暴露服務的服務提供方,服務提供者在啓動時,向註冊中心註冊自己提供的服務。
(2)服務消費者(Consumer): 調用遠程服務的服務消費方,服務消費者在啓動時,向註冊中心訂閱自己所需的服務,服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
(3)註冊中心(Registry):註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者
(4)監控中心(Monitor):服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心

調用關係說明
(1)服務容器負責啓動,加載,運行服務提供者。
(2)服務提供者在啓動時,向註冊中心註冊自己提供的服務。
(3)服務消費者在啓動時,向註冊中心訂閱自己所需的服務。
(4)註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
(5)服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
(6)服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

發佈了100 篇原創文章 · 獲贊 9 · 訪問量 9207
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章