二、分布式RPC框架Dubbo入門
2.1 Dubbo簡介
-
Apache Dubbo是一款微服務開發框架,它提供了RPC通信與微服務治理兩大關鍵能力(致力于提供高性能和透明化的RPC遠程服務呼叫方案,以及SOA服務治理方案),這意味著,使用Dubbo開發的微服務,將具備相互之間的遠程發現與通信能力,同時利用Dubbo提供的豐富服務治理能力,可以實作諸如服務實作、負載均衡、流量調度等服務治理訴求,同時Dubbo使高度可擴展的用戶幾乎可以在任意功能點去定制自己的實作,以改變框架的默認行為來滿足自己的業務需求,
-
Apache Dubbo是一開高性能的、輕量級的Java RPC框架,其前身是阿里巴巴公司開源的一個框架,可以和Spring框架無縫繼承,
-
簡單的說,dubbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務框架的需求,并且本質上是個服務呼叫的東西,說白了就是個遠程服務呼叫的分布式框架(告別Web Service模式中的WSdl,以服務者與消費者的方式在dubbo上注冊),
其核心部分包含:- 遠程通訊: 提供對多種基于長連接的NIO框架抽象封裝,包括多種執行緒模型,序列化,以及“請求-回應”模式的資訊交換方式,
- 集群容錯: 提供基于介面方法的透明遠程程序呼叫,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集群支持,
- 自動發現: 基于注冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器,
Dubbo官網地址:http://dubbo.apache.org
2.2 什么是RPC?
RPC全稱為remote procedure call,即遠程程序呼叫,比如兩臺服務器A和B,A服務器上部署一個應用,B服務器上部署一個應用,A服務器上的應用想呼叫B服務器上的應用提供的方法,由于兩個應用不在一個記憶體空間,不能直接呼叫,所以需要通過網路來表達呼叫的語意和傳達呼叫的資料,
RPC是一個泛化的概念,嚴格來說一切遠程程序呼叫手段都屬于RPC范疇,各種開發語言都有自己的RPC框架,Java中的RPC框架比較多,廣泛使用的有RMI、Hessian、Dubbo等,
需要注意的是RPC并不是一個具體的技術,而是指整個網路遠程呼叫程序,
2.3 Dubbo能做什么?
Dubbo采用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴展進行加載,
Dubbo能做到:
- 透明化的遠程方法呼叫,就像呼叫本地方法一樣呼叫遠程方法,只需簡單配置,沒有任何API侵入,
- 軟負載均衡及容錯機制,可在內網替代F5等硬體負載均衡器,降低成本,減少單點,
- 服務自動注冊與發現,不再需要寫死服務提供方地址,注冊中心基于介面名查詢服務提供者的IP地址,并且能夠平滑添加或洗掉服務提供者,
2.4 什么是服務發現?
- 服務發現就是將服務提供者資訊主動上報到服務注冊中心進行服務注冊,是微服務框架需要具備的關鍵能力,如將其提供的服務和對應的IP和埠注冊到ZooKeeper中,服務呼叫者啟動的時候,將ZooKeeper注冊中心資訊下拉倒服務呼叫者本機快取,到需要用到到某個服務時,通過某種演算法,去選擇其中一個IP+埠,然后呼叫,
- 實作服務發現的方式有很多,Dubbo提供的是一種Client-Based的服務機制,通常還需要部署額外的第三方注冊中心組件來協調服務發現程序,如常用的Nacos、Consul、Zookeeper等,Dubbo自身也提供了對多種注冊中心組件的對接,用戶可以靈活選擇,
2.5 Dubbo架構
Dubbo架構圖(官方提供):

虛線都是異步訪問,實線都是同步訪問
藍色虛線:在啟動時完成的功能
綠色虛線(實線)都是程式運行程序中執行的功能
角色節點說明:
| More Actions | 節點角色名稱 |
|---|---|
| Provider | 暴露服務的服務提供方 |
| Consumer | 呼叫遠程服務的服務消費方 |
| Registry | 服務注冊與發現的注冊中心 |
| Monitor | 統計服務的呼叫次數和呼叫時間的監控中心 |
| Container | 服務運行容器 |
服務發現的一個核心組件就是注冊中心,Provider注冊地址到注冊中心,Consumer從注冊中心讀取和訂閱Provider地址串列,因此要啟用服務發現,需要為Dubbo增加注冊中心配置,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/295377.html
標籤:其他
