基於zookeeper和dubbo構建高可用服務


一、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM