天天看點

dubbo快速入門

Apache Dubbo™ (incubating)是一款高性能Java RPC架構。官網:https://dubbo.apache.org/zh/ Dubbo是一個分布式服務架構,緻力于提供高性能和透明化的RPC遠端服務調用方案,是阿裡巴巴SOA服務化治理方案的核心架構,每天為2,000+個服務提供3,000,000,000+次通路量支援,并被廣泛應用于阿裡巴巴集團的各成員站點。Dubbo是Alibaba開源的分布式服務架構,它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)。從服務模型的角度來看,Dubbo采用的是一種非常簡單的模型,要麼是提供方提供服務,要麼是消費方消費服務,是以基于這一點可以抽象出服務提供方(Provider)和服務消費方(Consumer)兩個角色。關于注冊中心、協定支援、服務監控等内容。

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

當網站流量很小時,隻需一個應用,将所有功能都部署在一起,以減少部署節點和成本。此時,用于簡化增删改查工作量的資料通路架構(ORM)是關鍵。

當通路量逐漸增大,單一應用增加機器帶來的加速度越來越小,将應用拆成互不相幹的幾個應用,以提升效率。此時,用于加速前端頁面開發的Web架構(MVC)是關鍵。

當垂直應用越來越多,應用之間互動不可避免,将核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用于提高業務複用及整合的分布式服務架構(RPC)是關鍵。

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

dubbo快速入門

節點角色說明:

· Provider: 暴露服務的服務提供方。

· Consumer: 調用遠端服務的服務消費方。

· Registry: 服務注冊與發現的注冊中心。

· Monitor: 統計服務的調用次調和調用時間的監控中心。

· Container: 服務運作容器。

調用關系說明:

· 0. 服務容器負責啟動,加載,運作服務提供者。

· 1. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。

· 2. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。

· 3. 注冊中心傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推

送變更資料給消費者。

· 4. 服務消費者,從提供者位址清單中,基于軟負載均衡算法,選一台提供者進行調用,

如果調用失敗,再選另一台調用。

· 5. 服務消費者和提供者,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計

資料到監控中心。

dubbo支援多種注冊中心,推薦使用ZooKeeper。

dubbo快速入門

Zookeeper 是 Apacahe Hadoop 的子項目,是一個樹型的目錄服務,支援變更推送,适合作為 Dubbo 服務的注

冊中心,工業強度較高,可用于生産環境,并推薦使用。

流程說明:

  服務提供者啟動時: 向 /dubbo/com.foo.BarService/providers 目錄下寫入自己的 URL 位址

  服務消費者啟動時: 訂閱 /dubbo/com.foo.BarService/providers 目錄下的提供者 URL 位址。并向

  /dubbo/com.foo.BarService/consumers 目錄下寫入自己的 URL 位址

  監控中心啟動時: 訂閱 /dubbo/com.foo.BarService 目錄下的所有提供者和消費者 URL 位址。

支援以下功能:

  當提供者出現斷電等異常停機時,注冊中心能自動删除提供者資訊

  當注冊中心重新開機時,能自動恢複注冊資料,以及訂閱請求

  當會話過期時,能自動恢複注冊資料,以及訂閱請求

  當設定 <dubbo:registry check="false" /> 時,記錄失敗注冊和訂閱請求,背景定時重試

  可通過 <dubbo:registry username="admin" password="1234" /> 設定 zookeeper 登入資訊

  可通過 <dubbo:registry group="dubbo" /> 設定 zookeeper 的根節點,不設定将使用無根樹

支援 * 号通配符 <dubbo:reference group="*" version="*" /> ,可訂閱服務的所有分組和所有版本

的提供者

使用docker進行安裝zookeeper

服務注冊,建立一個springboot工程,作為父工程,依賴如下

在父工程下建立一個子子產品,依賴如下

編寫配置檔案application.yml

編寫service實作類

編寫啟動類

zookeeper圖形化用戶端工具:ZooInspector下載下傳位址 :https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

然後啟動項目,在ZooInspector檢視,服務被注冊到zookeeper裡面了

dubbo快速入門

在父工程下建立一個module,命名為consumer

在pom.xml添加maven依賴

編寫application.yml

編寫測試類,遠端調用

一點點學習,一絲絲進步。不懈怠,才不會被時代所淘汰!