Dubbo介紹java
當服務愈來愈多時,容量的評估,小服務資源的浪費等問題逐漸顯現,此時須要增長一個調度中心基於訪問壓力實時管理集羣容量,提供集羣利用率。其中,用於提升機器利用率的資源調度和治理中心是關鍵。git
Dubbo 是阿里巴巴開源項目的一個分佈式服務框架。致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,Dubbo就是個服務框架,若是沒有分佈式的需求,實際上是不須要用的,只有在分佈式的時候,纔有Dubbo這樣的分佈式服務框架的需求,而且本質上是個服務調用的東西,說白了就是個遠程服務調用的分佈式框架(告別Web Service模式中的WSDL,以服務者與消費者的方式在Dubbo上註冊)。github
名詞解釋:算法
WSDL:Web Services Description Language,網絡服務描述語言apache
RPC:Remote Procedure Call Protocol,遠程過程調用協議vim
Dubbo工做原理:瀏覽器
調用關係說明:tomcat
1) 服務容器啓動、加載和運行服務提供者;安全
2) 服務提供者在啓動時,向註冊中心註冊本身提供的服務;網絡
3) 服務消費者在啓動時,向註冊中心訂閱本身所需的服務;
4) 註冊中心返回服務提供者地址列表給消費者,若是有變動,註冊中心將基於長鏈接推送變動給消費者;
5) 服務消費者從地址列表中,基於軟負載均衡算法選一臺服務提供者進行調用,若是調用失敗再選另外一臺;
6) 服務消費者和服務提供者在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
Zookeeper的做用:
Zookeeper 做爲一個分佈式的服務框架,主要用來解決分佈式集羣中應用系統的一致性問題,它能提供基於相似於文件系統的目錄節點樹方式的數據存儲,可是 Zookeeper 並非用來專門存儲數據的,它的做用主要是用來維護和監控你存儲的數據的狀態變化。經過監控這些數據狀態的變化,從而能夠達到基於數據的集羣管理。
Dubbo和zookeeper啥關係?
簡單來講打個比方:Dubbo就是動物園的動物,zookeeper是動物園。若是遊客想看動物的話那麼就去動物園看。好比你要看老虎,那麼動物園有你才能看到。換句話說咱們把不少不一樣的Dubbo(動物)放到zookeeper(動物園中)提供給咱們遊客進行觀賞。這個過程當中三個關鍵:場所、供給者、消費者。
再說一個分佈式的項目,server(消費)層與 service(供給)層被拆分了開來, 部署在不一樣的tomcat中, 我在server層須要調用 service層的接口,可是兩個運行在不一樣tomcat下的服務沒法直接互調接口,那麼就能夠經過zookeeper和Dubbo實現。就比如把動物放到動物園,咱們要看了直接去動物園就行。而不能直接到動物生活的地方去看,會有性命安全之憂(好比你去看老虎)。
咱們經過Dubbo 創建service這個服務,而且到zookeeper上面註冊,填寫對應的zookeeper服務所在 的IP及端口號。
JDK-1.8 Maven-3.5.3 Zookeeper-3.4.12 Tomcat-9——8月8日改:因爲Dubbo-Admin替換爲SpringBoot的新版本,不在須要依賴Tomcat運行,能夠跳過安裝 Dubbo-Admin——8月8日改:新版本的編譯和執行,補充在末尾
(可選) 卸載已有的open jdk
# rpm -qa | grep jdk java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686 # yum -y remove java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686 remove java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686
安裝步驟, 請見 http://qiangsh.blog.51cto.com/3510397/1771748
Maven的下載地址是:http://maven.apache.org/download.cgi
下載最新版本的Maven-3.5.4.tar.gz
1. 安裝Maven-3.5.4
#下載maven cd /data/packages wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz #建立maven的工做路徑 mkdir -p /usr/local/maven tar -zvxf apache-maven-3.5.4-bin.tar.gz -C /usr/local/maven/ #作一個軟連接,方便之後升級: ln -s /usr/local/maven/apache-maven-3.5.4 /usr/local/maven/maven3
2. 修改系統環境變量
# vim /etc/profile #在適當的位置添加 export M2_HOME=/usr/local/maven/maven3 export PATH=$M2_HOME/bin:$PATH #執行如下命令,使修改生效: # source /etc/profile
3. 驗證安裝
# mvn -v
4. 建立本地資源倉庫
#在本地建立一個資源文件的下載目錄: mkdir -p /data/maven/local-Repository #修改Maven配置文件: vim /usr/local/maven/maven3/conf/settings.xml #我的配置以下: <localRepository>/data/maven/local-Repository</localRepository> <mirror> <id>alimaven</id> <name>aliyun-maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <id>repo2</id> <name>Maven Repository2</name> <url>http://repo2.maven.org/maven2/</url> <mirrorOf>central</mirrorOf> </mirror>
Zookeeper下載地址:
https://www.apache.org/dyn/closer.cgi/zookeeper/
1. 安裝Zookeeper
tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/ mv /usr/local/zookeeper-3.4.13 /usr/local/zookeeper
2. 建立Zookeeper項目目錄
mkdir /data/zookeeper #項目目錄 mkdir /data/zookeeper/zkdata #存放快照日誌 mkdir /data/zookeeper/zkdatalog #存放事物日誌
3. 修改配置文件
#進入 /usr/local/zookeeper/conf目錄,複製zoo_sample.cfg文件並更名爲zoo.cfg。 cd /usr/local/zookeeper/conf cp zoo_sample.cfg zoo.cfg #修改zoo.cfg文件,須要修改如下幾個地方: # vim zoo.cfg ----- tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/zkdata dataLogDir=/data/zookeeper/zkdatalog clientPort=12181 server.1=127.0.0.1:12888:13888
4. 配置zookeeper的環境變量
# vim /etc/profile export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin # source /etc/profile
5. 啓動Zookeeper
#進入bin目錄 cd /usr/local/zookeeper/bin # 啓動zookeeper服務 ./zkServer.sh start # 啓動完成後,查看服務狀態: ./zkServer.sh status
6. 配置 zookeeper 開機啓動
echo '/usr/local/zookeeper/bin/zkServer.sh start' >>/etc/rc.local
爲了更好的調試、發現問題、解決問題,所以引入dubbo-admin。經過dubbo-admin能夠對消費者和提供者進行管理。
1. 下載Dubbo-Admin
#下載 cd /opt git clone https://github.com/apache/incubator-Dubbo-ops
2. 修改配置信息
cd /opt/incubator-Dubbo-ops/dubbo-admin/src/main/resources vim application.properties
須要注意的地方是:
3: 編譯
cd /opt/incubator-Dubbo-ops/ mvn package
完成後,編譯得到dubbo-admin-0.0.1-SNAPSHOT.jar,能夠直接運行,不須要依賴Tomcat。
ls /opt/incubator-Dubbo-ops/dubbo-admin/target classes generated-sources maven-status dubbo-admin-0.0.1-SNAPSHOT.jar generated-test-sources surefire-reports dubbo-admin-0.0.1-SNAPSHOT.jar.original maven-archiver test-classes
4: 啓動
#將這個jar包複製到合適的路徑下,如/usr/local/dubbo-admin/ mkdir /usr/local/dubbo-admin cp /opt/incubator-Dubbo-ops/dubbo-admin/target/dubbo-admin-0.0.1-SNAPSHOT.jar /usr/local/dubbo-admin/ #而後啓動服務 nohup java -jar /usr/local/dubbo-admin/dubbo-admin-0.0.1-SNAPSHOT.jar & #加入開機自啓: echo 'nohup java -jar /usr/local/dubbo-admin/dubbo-admin-0.0.1-SNAPSHOT.jar &' >>/etc/rc.local
在啓動run-DubboAdmin.sh以前咱們須要先把Zookeeper啓動起來,以後咱們就能夠訪問Dubbo-admin了。
會生成日誌文件:dubbo-governance.log,記錄啓動和訪問的記錄。
確認關閉了防火牆,或者容許7001端口的通信。