基于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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值