天天看點

分布式RPC架構Apache Dubbo一、軟體架構的演進過程3.SOA架構4.微服務架構二、Apache Dubbo概述1.Dubbo簡介2.Dubbo架構

分布式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.單體架構

分布式RPC架構Apache Dubbo一、軟體架構的演進過程3.SOA架構4.微服務架構二、Apache Dubbo概述1.Dubbo簡介2.Dubbo架構

架構說明:

全部功能集中在一個項目内(All in one)。

架構優點:

架構簡單,前期開發成本低,開發周期短,适合小型項目。

架構缺點:

全部功能集中在一個工程中,對于大型項目不易開發、擴充和維護。

技術棧受限,隻能使用一種語言開發。

系統性能擴充隻能通過擴充叢集節點,成本高。

2.垂直架構

分布式RPC架構Apache Dubbo一、軟體架構的演進過程3.SOA架構4.微服務架構二、Apache Dubbo概述1.Dubbo簡介2.Dubbo架構

架構說明:

按照業務進行切割,形成小的單體項目。

架構優點:

技術棧可擴充(不同系統可以用不同的程式設計語言編寫)。

架構缺點:

功能集中在一個項目中,不利于開發、擴充、維護。

系統擴張隻能通過叢集的方式。

項目之間功能備援、資料備援、耦合性強。

3.SOA架構

SOA全稱為Service-Oriented Architecture,即面向服務的架構。它可以根據需求通過網絡對松散耦合

的粗粒度應用元件(服務)進行分布式部署、組合和使用。一個服務通常以獨立的形式存在于作業系統進

程中。

站在功能的角度,把業務邏輯抽象成可複用的服務,通過服務的編排實作業務的快速再生,目的:把原

先固有的業務功能轉變為通用的業務服務,實作業務邏輯的快速複用。

分布式RPC架構Apache Dubbo一、軟體架構的演進過程3.SOA架構4.微服務架構二、Apache Dubbo概述1.Dubbo簡介2.Dubbo架構

架構說明:

将重複功能或子產品抽取成元件的形式,對外提供服務,在項目與服務之間使用ESB(企業服務總線)的形式作為通信的橋梁。

架構優點

重複功能或子產品抽取為服務,提高開發效率。

可重用性高。

可維護性高。

架構缺點:

各系統之間業務不同,很難确認功能或子產品是重複多的。

抽取服務的粒度大。

系統和服務之間耦合度高。

4.微服務架構

分布式RPC架構Apache Dubbo一、軟體架構的演進過程3.SOA架構4.微服務架構二、Apache Dubbo概述1.Dubbo簡介2.Dubbo架構

架構說明:

将系統服務層完全獨立出來,抽取為一個一個的微服務。

抽取的粒度更細,遵循單一原則。

采用輕量級架構協定傳輸。

架構優點:

服務拆分粒度更細,有利于提高開發效率。

可以針對不同服務指定對應的優化方案。

适用于網際網路,産品疊代周期更短。

架構缺點:

粒度太細導緻服務太多,維護成本高。

分布式系統開發的技術成本高,對團隊的挑戰大。

二、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官方提供)如下:

分布式RPC架構Apache Dubbo一、軟體架構的演進過程3.SOA架構4.微服務架構二、Apache Dubbo概述1.Dubbo簡介2.Dubbo架構
分布式RPC架構Apache Dubbo一、軟體架構的演進過程3.SOA架構4.微服務架構二、Apache Dubbo概述1.Dubbo簡介2.Dubbo架構

3.服務注冊中心Zookeeper

通過前面的Dubbo架構圖可以看到,Registry(服務注冊中心)在其中起着至關重要的作用。Dubbo官

方推薦使用Zookeeper作為服務注冊中心。

3.1 Zookeeper介紹

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

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

Zookeeper樹型目錄服務:

分布式RPC架構Apache Dubbo一、軟體架構的演進過程3.SOA架構4.微服務架構二、Apache Dubbo概述1.Dubbo簡介2.Dubbo架構

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

注:字母指令要區分大小寫。