RPC框架Dubbo 簡介和安裝

一、基礎知識

1、分佈式基礎理論

1.1)、什麼是分佈式系統?

《分佈式系統原理與範型》定義:
“分佈式系統是若干獨立計算機的集合,這些計算機對於用戶來說就像單個相關係統”
分佈式系統(distributed system)是建立在網絡之上的軟件系統。

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

1.2)、發展演變

image.png

單一應用架構

當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。此時,用於簡化增刪改查工作量的數據訪問框架(ORM)是關鍵。

image.png

適用於小型網站,小型管理系統,將所有功能都部署到一個功能裏,簡單易用。
缺點: 1、性能擴展比較難
2、協同開發問題
3、不利於升級維護

垂直應用架構

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

image.png

通過切分業務來實現各個模塊獨立部署,降低了維護和部署的難度,團隊各司其職更易管理,性能擴展也更方便,更有針對性。
缺點: 公用模塊無法重複利用,開發性的浪費

分佈式服務架構

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

image.png

流動計算架構

當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個調度中心基於訪問壓力實時管理集羣容量,提高集羣利用率。此時,用於 提高機器利用率的資源調度和治理中心(SOA)[ Service Oriented Architecture]是關鍵

image.png

1.3)、RPC

什麼叫RPC

RPC【Remote Procedure Call】是指遠程過程調用 ,是一種進程間通信方式,他是一種技術的思想,而不是規範。它允許程序調用另一個地址空間(通常是共享網絡的另一臺機器上)的過程或函數,而不用程序員顯式編碼這個遠程調用的細節。即程序員無論是調用本地的還是遠程的函數,本質上編寫的調用代碼基本相同。

RPC基本原理

image.png

image.png

2、dubbo核心概念

2.1)、簡介

Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。
官網:
dubbo官網

2.2)、基本概念

image.png

服務提供者(Provider): 暴露服務的服務提供方,服務提供者在啓動時,向註冊中心註冊自己提供的服務。
服務消費者(Consumer): 調用遠程服務的服務消費方,服務消費者在啓動時,向註冊中心訂閱自己所需的服務,服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
註冊中心(Registry): 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者
監控中心(Monitor): 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心

調用關係說明

  • 服務容器負責啓動,加載,運行服務提供者。
  • 服務提供者在啓動時,向註冊中心註冊自己提供的服務。
  • 服務消費者在啓動時,向註冊中心訂閱自己所需的服務。
  • 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
  • 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
  • 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

3、dubbo環境搭建

3.1)、【windows】-安裝zookeeper

zk 安裝比較簡單官網下載完後,根據自己需求修改下config文件,文件名改爲zoo.cfg , 然後返回到bin目錄 ,server.cmd啓動即可

3.2)、【windows】-安裝dubbo-admin管理控制檯

dubbo本身並不是一個服務軟件。它其實就是一個jar包能夠幫你的java程序連接到zookeeper,並利用zookeeper消費、提供服務。所以你不用在Linux上啓動什麼dubbo服務。
但是爲了讓用戶更好的管理監控衆多的dubbo服務,官方提供了一個可視化的監控程序,不過這個監控即使不裝也不影響使用。
image.png

  1. 下載dubbo-admin
    https://github.com/apache/incubator-dubbo-ops

  2. 進入目錄,修改dubbo-admin配置
    修改 src\main\resources\application.properties 指定zookeeper地址

  3. 打包dubbo-admin
    mvn clean package

  4. 運行dubbo-admin
    java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
    注意:【有可能控制檯看着啓動了,但是網頁打不開,需要在控制檯按下ctrl+c即可】
    默認使用root/root 登陸

3.3)、【linux】-安裝zookeeper

1、安裝jdk

1、下載jdk

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

不要使用wget命令獲取jdk鏈接,這是默認不同意,導致下載來的jdk壓縮內容錯誤

2、上傳到服務器並解壓

image.png

3、設置環境變量

如果你的jdk文件放在服務器中的這個 /usr/local/java/jdk1.8.0_171 文件夾下
image.png

那麼文件末尾加入下面配置
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export JRE_HOME=JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/jre export CLASSPATH=.:{JAVA_HOME}/lib:JREHOME/libexportPATH={JRE_HOME}/lib export PATH={JAVA_HOME}/bin:$PATH

4、使環境變量生效&測試JDK

image.png

2、安裝zookeeper

1、下載zookeeper

zookeeper網址

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz 
2、解壓

image.png

3、移動到指定位置並改名爲zookeeper

image.png
image.png

3、開機啓動zookeeper

1)-複製如下腳本
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
ZK_PATH=/usr/local/zookeeper
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
case $1 in
         start) sh  $ZK_PATH/bin/zkServer.sh start;;
         stop)  sh  $ZK_PATH/bin/zkServer.sh stop;;
         status) sh  $ZK_PATH/bin/zkServer.sh status;;
	 restart) sh $ZK_PATH/bin/zkServer.sh restart;;
         *)  echo "require start|stop|status|restart"  ;;
esac

2)-把腳本註冊爲Service
image.png

3)-增加權限

image.png

4、配置zookeeper

1、初始化zookeeper配置文件

拷貝/usr/local/zookeeper/conf/zoo_sample.cfg
到同一個目錄下改個名字叫zoo.cfg

2、啓動zookeeper

image.png

3.4)、【linux】-安裝dubbo-admin管理控制檯

1、安裝Tomcat8(舊版dubbo-admin是war,新版是jar不需要安裝Tomcat)

1、下載Tomcat8並解壓

tomcat下載地址

wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
2、解壓移動到指定位置

image.png

3、開機啓動tomcat8

image.png
複製如下腳本

#!/bin/bash
#chkconfig:2345 21 90
#description:apache-tomcat-8
#processname:apache-tomcat-8
CATALANA_HOME=/opt/apache-tomcat-8.5.32
export JAVA_HOME=/opt/java/jdk1.8.0_171
case $1 in
start)
    echo "Starting Tomcat..."  
    $CATALANA_HOME/bin/startup.sh
    ;;

stop)
    echo "Stopping Tomcat..."  
    $CATALANA_HOME/bin/shutdown.sh
    ;;

restart)
    echo "Stopping Tomcat..."  
    $CATALANA_HOME/bin/shutdown.sh
    sleep 2
    echo  
    echo "Starting Tomcat..."  
    $CATALANA_HOME/bin/startup.sh
    ;;
*)
    echo "Usage: tomcat {start|stop|restart}"  
    ;; esac

4、註冊服務&添加權限

image.png

image.png

5、啓動服務&訪問tomcat測試

image.png

image.png

2、安裝dubbo-admin

dubbo本身並不是一個服務軟件。它其實就是一個jar包能夠幫你的java程序連接到zookeeper,並利用zookeeper消費、提供服務。所以你不用在Linux上啓動什麼dubbo服務。
但是爲了讓用戶更好的管理監控衆多的dubbo服務,官方提供了一個可視化的監控程序,不過這個監控即使不裝也不影響使用。

1、下載dubbo-admin

https://github.com/apache/incubator-dubbo-ops

image.png

2、進入目錄,修改dubbo-admin配置

修改 src\main\resources\application.properties 指定zookeeper地址
image.png

3、打包dubbo-admin

mvn clean package -Dmaven.test.skip=true

4、運行dubbo-admin

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
默認使用root/root 登陸
image.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章