Spring + Dubbo + zookeeper (linux) 框架搭建

dubbo簡介

節點角色說明:java

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

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

Registry: 服務註冊與發現的註冊中心。算法

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

Container: 服務運行容器。windows


調用關係說明:tomcat

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

1. 服務提供者在啓動時,向註冊中心註冊本身提供的服務。mybatis

2. 服務消費者在啓動時,向註冊中心訂閱本身所需的服務。mvc

3. 註冊中心返回服務提供者地址列表給消費者,若是有變動,註冊中心將基於長鏈接推送變動數據給消費者。

4. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,若是調用失敗,再選另外一臺調用。

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



四個步驟

1 搭建zookeeper消息中心

2 搭建dubbo服務端代碼

3 寫dubbo客戶端代碼

4 dubbo提供的dubbo-admin-2.5.4.war 管理控制檯

一: 搭建zookeeper 消息中心


1 下載zookeeper安裝文件

    zookeeper-3.3.6.tar.gz

2  執行命令 tar zxvf zookeeper-3.4.6.tar.gz 解壓,
3 到 zookeeper-3.3.6/conf 目錄下

把zoo_sample.cfg 複製一份爲zoo.cfg,做爲默認配置文件



4 配置說明

tickTime:這個時間是做爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。
dataDir
:顧名思義就是 Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
clientPort
:這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。

個人配置: 端口2181是默認配置


5 在zookper-3.3.6/bin目錄下執行

./zkServer.sh start 啓動zookeeper


6 驗證zookeeper是否啓動

使用netstat -lpn | grep 2181 

若是有端口號, 說明已經啓動

ps: 由於我linux 是裝在虛擬機裏面, zookeer在虛擬機裏,  DubboServer , DubboClient , DubboAdmin 都是在windows上, 注意要開放linux的2181端口


二 DubboServer 工程


DubboServer段是一個web工程,服務提供者, 我這裏是dubbo和spring結合搭建.

spring的搭建過程,可參見  springmvc + mybatis配置

我這裏僅是搭建spring和dubbo的例子,使用的最少的配置


1 測試代碼編寫



2 dubbo的xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="wt-dubbo-server"  />
<!-- 消息中心地址 -->
<dubbo:registry address="zookeeper://192.168.20.129:2181" check="false"/>
<dubbo:protocol name="dubbo" port="20880" serialization="hessian2" />
<!-- 聲明接口 -->
<dubbo:service interface="com.DubboServer" ref="dubboServer" />
</beans>

3 導出接口層的jar

把server層的代碼導出jar, 後面放到dubboClient中!!


而後啓動項目


三 DubboClient工程

dubboClient能夠是web工程也能夠是普通的javaproject.

我也是用的spring集成,可是使用的是junit進行測試, 


1 dubboclient端代碼


2 dubbo的xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="dys-client"  />
<!-- 消息中心地址 -->
<dubbo:registry address="zookeeper://192.168.20.129:2181" check="false"/>
<!-- 聲明接口 -->
<dubbo:reference id="dubboServer" interface="com.DubboServer" />
</beans>


3 測試運行client端代碼(zookeeper 和 dubboServer端已經啓動)

運行成功!


四 dubbo-admin-2.5.4.war 管理控制檯

把這個war包放到tomcat的webapps目錄下 

1 修改tomcat的端口號不要和其餘服務衝突.

2 修改 WEB-INF 下的dubbo.properties文件

dubbo.registry.address=zookeeper://192.168.20.129:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest


3 啓動tomcat,訪問.

點擊 服務治理--提供者 可看到以下,    還有一些其餘的信息,再查閱吧,暫時我也不是很清楚

相關文章
相關標籤/搜索