基于zookeeper和dubbo构建高可用服务

原创 2016年08月30日 17:34:09

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






相关文章推荐

Java集群优化——dubbo+zookeeper构建高可用分布式集群

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使...
  • xvshu
  • xvshu
  • 2015年08月14日 21:28
  • 30944

Java集群优化——dubbo+zookeeper构建高可用分布式集群

不久前,我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容,...

eclipse 使用maven 构建springboot+dubbo+zookeeper 构建soa服务(面向服务架构)

本文参考:http://www.bysocket.com/?p=1681 一、为啥整合 Dubbo 实现 SOA Dubbo 不单单只是高性能的 RPC 调用框架,更是 SOA 服务治理的...

spring + dubbo + zookeeper 服务端代码

  • 2017年04月25日 09:57
  • 38.27MB
  • 下载

Dubbo+Zookeeper实现分布式服务和负载均衡精通学习资料

java架构师、集群、高可用、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战   视频课程内...

精华【分布式微服务云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!

分布式框架 Maven,Springmvc,mybatis,Dubbo ZooKeeper,Redis,FastDFS ,ActiveMQ Restful分布式服务,Redis分布式缓存技术,Apac...

spring整合dubbo-2.5.3(使用TCP广播或者zookeeper 暴露和发现服务)

spring整合dubbo-2.5.3
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于zookeeper和dubbo构建高可用服务
举报原因:
原因补充:

(最多只允许输入30个字)