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)是關鍵。

節點角色說明:
· Provider: 暴露服務的服務提供方。
· Consumer: 調用遠端服務的服務消費方。
· Registry: 服務注冊與發現的注冊中心。
· Monitor: 統計服務的調用次調和調用時間的監控中心。
· Container: 服務運作容器。
調用關系說明:
· 0. 服務容器負責啟動,加載,運作服務提供者。
· 1. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
· 2. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
· 3. 注冊中心傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推
送變更資料給消費者。
· 4. 服務消費者,從提供者位址清單中,基于軟負載均衡算法,選一台提供者進行調用,
如果調用失敗,再選另一台調用。
· 5. 服務消費者和提供者,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計
資料到監控中心。
dubbo支援多種注冊中心,推薦使用ZooKeeper。
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裡面了
在父工程下建立一個module,命名為consumer
在pom.xml添加maven依賴
編寫application.yml
編寫測試類,遠端調用
一點點學習,一絲絲進步。不懈怠,才不會被時代所淘汰!