分布式RPC架構 Apache Dubbo
- 一、軟體架構的演進過程
-
- 1.單體架構
- 2.垂直架構
- 3.SOA架構
- 4.微服務架構
- 二、Apache Dubbo概述
- 1.Dubbo簡介
-
- 什麼是RPC
- 2.Dubbo架構
-
- 3.服務注冊中心Zookeeper
- 3.1 Zookeeper介紹
- 3.2 安裝Zookeeper
文章目錄
- 一、軟體架構的演進過程
-
- 1.單體架構
- 2.垂直架構
- 3.SOA架構
- 4.微服務架構
- 二、Apache Dubbo概述
- 1.Dubbo簡介
-
- 什麼是RPC
- 2.Dubbo架構
-
- 3.服務注冊中心Zookeeper
- 3.1 Zookeeper介紹
- 3.2 安裝Zookeeper
一、軟體架構的演進過程
軟體架構的發展經曆了由單體架構、垂直架構、SOA架構到微服務架構的演進過程,下面我們分别了解以下這幾個架構
1.單體架構
架構說明:
全部功能集中在一個項目内(All in one)。
架構優點:
架構簡單,前期開發成本低,開發周期短,适合小型項目。
架構缺點:
全部功能集中在一個工程中,對于大型項目不易開發、擴充和維護。
技術棧受限,隻能使用一種語言開發。
系統性能擴充隻能通過擴充叢集節點,成本高。
2.垂直架構
架構說明:
按照業務進行切割,形成小的單體項目。
架構優點:
技術棧可擴充(不同系統可以用不同的程式設計語言編寫)。
架構缺點:
功能集中在一個項目中,不利于開發、擴充、維護。
系統擴張隻能通過叢集的方式。
項目之間功能備援、資料備援、耦合性強。
3.SOA架構
SOA全稱為Service-Oriented Architecture,即面向服務的架構。它可以根據需求通過網絡對松散耦合
的粗粒度應用元件(服務)進行分布式部署、組合和使用。一個服務通常以獨立的形式存在于作業系統進
程中。
站在功能的角度,把業務邏輯抽象成可複用的服務,通過服務的編排實作業務的快速再生,目的:把原
先固有的業務功能轉變為通用的業務服務,實作業務邏輯的快速複用。
架構說明:
将重複功能或子產品抽取成元件的形式,對外提供服務,在項目與服務之間使用ESB(企業服務總線)的形式作為通信的橋梁。
架構優點
重複功能或子產品抽取為服務,提高開發效率。
可重用性高。
可維護性高。
架構缺點:
各系統之間業務不同,很難确認功能或子產品是重複多的。
抽取服務的粒度大。
系統和服務之間耦合度高。
4.微服務架構
架構說明:
将系統服務層完全獨立出來,抽取為一個一個的微服務。
抽取的粒度更細,遵循單一原則。
采用輕量級架構協定傳輸。
架構優點:
服務拆分粒度更細,有利于提高開發效率。
可以針對不同服務指定對應的優化方案。
适用于網際網路,産品疊代周期更短。
架構缺點:
粒度太細導緻服務太多,維護成本高。
分布式系統開發的技術成本高,對團隊的挑戰大。
二、Apache Dubbo概述
1.Dubbo簡介
Apache Dubbo是一款高性能的Java RPC架構。其前身是阿裡巴巴公司開源的、輕量級的開源Java RPC
架構,可以和Spring架構無縫內建,2018年阿裡巴巴把這個架構捐獻給了apache基金會
什麼是RPC
RPC全稱為remote procedure call,即遠端過程調用。比如兩台伺服器A和B,A伺服器上部署一個應
用,B伺服器上部署一個應用,A伺服器上的應用想調用B伺服器上的應用提供的方法,由于兩個應用不
在一個記憶體空間,不能直接調用,是以需要通過網絡來表達調用的語義和傳達調用的資料。
需要注意的是RPC并不是一個具體的技術,而是指整個網絡遠端調用過程。
RPC是一個泛化的概念,嚴格來說一切遠端過程調用手段都屬于RPC範疇。各種開發語言都有自己的
RPC架構。Java中的RPC架構比較多,廣泛使用的有RMI、Hessian、Dubbo等。
Dubbo官網位址:http://dubbo.apache.org
Dubbo提供了三大核心能力:面向接口的遠端方法調用,智能容錯和負載均衡,以及服務自動注冊和發現。
2.Dubbo架構
Dubbo架構圖(Dubbo官方提供)如下:
3.服務注冊中心Zookeeper
通過前面的Dubbo架構圖可以看到,Registry(服務注冊中心)在其中起着至關重要的作用。Dubbo官
方推薦使用Zookeeper作為服務注冊中心。
3.1 Zookeeper介紹
Zookeeper 是 Apache Hadoop 的子項目,是一個樹型的目錄服務,支援變更推送,适合作為 Dubbo
服務的注冊中心,工業強度較高,可用于生産環境,并推薦使用
Zookeeper樹型目錄服務:
3.2 安裝Zookeeper
1.在/usr/下建立檔案夾zookeeper;
2.上傳zookeeper檔案至此,并解壓;
3.在zookeeper的解壓目錄下建立 data 檔案夾;
4.編輯zookeeper檔案夾下conf檔案夾下的zoo.cfg檔案:
dataDir=/usr/zookeeper/zookeeper-3.4.6/data
clientPort=2181
5.運作檔案夾bin下的zkserver.sh啟動zookeeper服務:
./zkServer.sh start
如果要關閉zkServer,輸入指令即可:
./zkServer.sh stop
檢視akServer的運作狀态:
./zkServer.sh status
注:字母指令要區分大小寫。