天天看點

建立Maven項目下的Dubbo+Zookeeper架構第一:Dubbo背景第二:Dubbo簡介第三:Duboo與Zookeeper整合:

網際網路的發展,網站應用的規模不斷擴大,正常的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,Dubbo是一個分布式服務架構,在這種情況下誕生的。現在核心業務抽取出來,作為獨立的服務,使前端應用能更快速和穩定的響應。

建立Maven項目下的Dubbo+Zookeeper架構第一:Dubbo背景第二:Dubbo簡介第三:Duboo與Zookeeper整合:

大規模服務化,應用使用RMI或Hessian等工具,通過配置服務URL位址調用,通過F5等硬體進行負載均衡。

當然了,在系統越來越複雜的時候我們就面臨三個問題:

(1) 當服務越來越多時,服務URL配置管理變得非常困難,F5硬體負載均衡器的單點壓力也越來越大。

此時需要一個服務注冊中心,動态的注冊和發現服務,使服務的位置透明。并通過在消費方擷取服務提供方位址清單,實作軟負載均衡和Failover,降低對F5硬體負載均衡器的依賴,也能減少部分成本。

(2) 當進一步發展,服務間依賴關系變得錯蹤複雜,甚至分不清哪個應用要在哪個應用之前啟動,架構師都不能完整的描述應用的架構關系。

這時,需要自動畫出應用間的依賴關系圖,以幫助架構師理清理關系。

(3) 接着,服務的調用量越來越大,服務的容量問題就暴露出來,這個服務需要多少機器支撐?什麼時候該加機器?

為了解決這些問題,第一步,要将服務現在每天的調用量,響應時間,都統計出來,作為容量規劃的參考名額。

其次,要可以動态調整權重,線上上,将某台機器的權重一直加大,并在加大的過程中記錄響應時間的變化,直到響應時間到達閥值,記錄此時的通路量,再以此通路量乘以機器數反推總容量。

Dubbo就是基于Hessian實作了自己Hessian協定,可以直接通過配置的Dubbo内置的其他協定,在服務消費方進行遠端調用,也就是說,服務調用方需要使用Java語言來基于Dubbo調用提供方服務,限制了服務調用方。

我們需要一個這樣的界面:

建立Maven項目下的Dubbo+Zookeeper架構第一:Dubbo背景第二:Dubbo簡介第三:Duboo與Zookeeper整合:

Dubbo的原理圖:

建立Maven項目下的Dubbo+Zookeeper架構第一:Dubbo背景第二:Dubbo簡介第三:Duboo與Zookeeper整合:

節點角色說明:

Provider: 暴露服務的服務提供方。

Consumer: 調用遠端服務的服務消費方。

Registry: 服務注冊與發現的注冊中心。

Monitor: 統計服務的調用次調和調用時間的監控中心。

Container: 服務運作容器。

調用關系說明:

0. 服務容器負責啟動,加載,運作服務提供者。

1. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。

2. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。

3. 注冊中心傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推送變更資料給消費者。

4. 服務消費者,從提供者位址清單中,基于軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。

5. 服務消費者和提供者,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計資料到監控中心。

 Dubbo提供了很多協定,Dubbo協定、RMI協定、Hessian協定,我們檢視Dubbo源代碼,有各種協定的實作,如圖所示:

建立Maven項目下的Dubbo+Zookeeper架構第一:Dubbo背景第二:Dubbo簡介第三:Duboo與Zookeeper整合:

我們之前沒用Dubbo之前時,大部分都使用Hessian來使用我們服務的暴露和調用,利用HessianProxyFactory調用遠端接口。

1)、在Linux系統上安裝JDK(使用1.7版本的jdk-7u25-linux-x64.tar.gz)

安裝按照百度經驗:

<a href="http://jingyan.baidu.com/article/ab0b56308966acc15afa7d18.html" target="_blank">Linux JDK安裝及配置 (tar.gz版)</a>

2)、安裝Zookeeper

按照部落格:

<a href="http://www.cnblogs.com/ilovexiao/p/3946547.html" target="_blank">centos下zookeeper安裝配置</a>

3)、安裝Tomcat

<a href="http://www.cnblogs.com/zhoulf/archive/2013/02/04/2891633.html" target="_blank">CentOS-6.3安裝配置Tomcat-7</a>

4)、配置Dubbo-admin管理頁面

<a href="http://doc.okbase.net/congcong68/archive/112508.html" target="_blank">Dubbo與Zookeeper、SpringMVC整合和使用(負載均衡、容錯)</a>

這裡我們需要注意一個地方:

 下載下傳dubbo-admin-2.4.1.war包,在Linux的tomcat部署,先将tomcat的webapps/Root檔案夾下載下傳的所有的檔案删除,把dubbo-admin-2.4.1放在tomcat的webapps/Root下,然後進行解壓:

第一開始的時候,我直接将dubbo-admin-2.4.1.war包解壓到Root下面,結果,不能通路了。是以大家在這裡注意一下。

注:大家要記得關閉防火牆:

systemctl stop firewalld.service #停止

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1948553,如需轉載請自行聯系原作者