一、zookeeper安裝
1、下載zookeeper,訪問地址:http://www.apache.org/dyn/closer.cgi/zookeeper/,本次下載3.2.6版本。也可以訪問北理工鏡像站進行下載。
2、下載后為gz格式文件,上傳至服務器/usr/local/目錄下,解壓縮
cd /usr/local/ tar -zxvf zookeeper-3.3.6.tar.gz
有關優化配置等內容,不在次文檔之列,具體可以參考:
http://www.linuxidc.com/Linux/2012-06/62304.htm
另外還有zookeeper監控工具等:https://www.oneapm.com/ci/zookeeper.html
3、啟動zookeeper,進入/usr/local/zookeeper-3.3.6/bin/目錄,啟動zookeeper。
cd /usr/local/zookeeper-3.3.6/bin ./zkServer.sh start
二、dubbo安裝
1、下載dubbo
為了便於監控dubbo服務,本次下載dubbo-admin服務。
可以通過github下載源碼后編譯,也可以下載對應war包。
源碼下載地址:https://github.com/alibaba/dubbo/releases
war下載地址: http://dubbo.io/Download-zh.htm (如果下載失敗,可以通過csdn下載)
2、啟動dubbo
dubbo-admin是dubbo的監控平台,集成了dubbo服務的簡單可視化管理功能,需要通過tomcat啟動。
建議新建一個tomcat,設置不同訪問端口,將dubbo-admin.war拷貝至${dubbo_tomcat_home}/webapps/目錄下
啟動tomcat
${dubbo_tomcat_home}/bin/startup.sh
三、服務的構建
dubbo的使用分為提供者(provider)、消費者(customer),dubbo與spring能夠完美結合。
1、提供方配置
新增dubbo配置文件(spring-dubbo-provider.xml),內含如下內容:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="interfaceweb-provder" /> <!-- 消息中心地址 --> <dubbo:registry id="zookeeper" address="zookeeper://123.57.56.94:2181" default="true"/> <!--<dubbo:registry id="localhost" address="N/A" default="false"/>--> <dubbo:protocol name="dubbo" port="20880" host="123.57.56.94"/> <dubbo:provider timeout="600000"/> <dubbo:consumer timeout="600000"/> <!-- 聲明接口 --> <bean id="forwardService" class="com.weiyun.interfaceweb.serviceimpl.ForwardServiceImpl"/> <dubbo:service ref="forwardService" interface="com.weiyun.interfaceweb.service.ForwardService" registry="zookeeper"/> </beans>
以上配置文件將dubbo服務注冊到了123.57.56.94服務器的2181端口上(此端口為zookeeper的默認端口)。
2、消費方配置
新增dubbo配置文件(spring-dubbo-customer.xml),內含如下內容
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="dubbo-consumer" /> <!-- 消息中心地址 --> <dubbo:registry id="zookeeper" address="zookeeper://192.168.0.59:2181" default="true" /> <dubbo:consumer timeout="600000"/> <!--<dubbo:registry check="false" />--> <!--<dubbo:consumer check="false"/>--> <!--<dubbo:protocol name="dubbo" port="20880" />--> <!-- 連接到哪個本地注冊中心 --> <!--<dubbo:registry id="localhost" address="zookeeper://localhost:2181"/>--> <!-- 聲明接口 --> <dubbo:reference id="forwardService" interface="com.weiyun.interfaceweb.service.ForwardService" check="false"/> <dubbo:reference id="accountService" interface="com.wybb.soa.account.service.AccountService" check="false"/> <!--registry="localhost" url="dubbo://127.0.0.1:20880/com.weiyun.interfaceweb.service.ForwardService"/>--> </beans>
以上配置文件引入了192.168.0.59服務器的2181端口所提供的服務
四、服務的啟動
dubbo服務提供者的啟動分為兩種情況:web項目和非web項目。web項目可通過發布至容器(tomcat等)中進行啟動;非web項目需要打包成jar格式進行啟動。tomcat啟動不再贅述,jar啟動時注意,linux下通過java -jar啟動的服務將直接將信息打印至當前控制台,當窗口關閉后服務自動停止,因此需要后台運行jar,可用如下命令:
nohup java -jar interfaceweb.jar &
也可以加入java內存設置參數
nohup java -Xms256m -Xmx1024m interfaceweb.jar &
消費端的啟動不再贅述。
五、常用命令
zookeeper的啟動:/usr/local/zookeeper/bin/zkServer.sh
dubbo-admin的啟動:/usr/local/dubbo-admin-tomcat/bin/startup.sh
dubbo服務的啟動:nohup java -jar /home/dubbo/jar/interfaceweb.jar &
監控dubbo服務情況:tail -f /home/dubbo/jar/nohup.out
監控dubbo-admin的注冊服務:http://${服務地址}:${端口}/dubbo 默認用戶名:root,默認密碼:root
六、常見問題
1、將provider的jar上傳至dubbo-admin服務器,能夠正常注冊,注冊后在dubbo-admin管理控制台中顯示提供者ip為外網ip,並且與本機ip無任何關系。
解決辦法:dns設置問題,需要手動設置spring-dubbo-provider.xml,加入host指向:
<dubbo:protocol name="dubbo" port="20880" host="123.57.56.94"/>
2、provider啟動提示端口綁定(bind)
單台服務器注冊多個服務時,需要將服務設置為不同端口
<dubbo:protocol name="dubbo" port="20881" host="123.57.56.94"/> <dubbo:protocol name="dubbo" port="20882" host="123.57.56.94"/>
3、注冊服務時多次提示注冊錯誤
建議重啟dubbo-admin-tomcat。
其他問題可參看http://dubbo.io/FAQ-zh.htm