dubbo的安装与测试demo
本文是我的第一篇博客,我尽量简单明了的介绍每一个操作步骤,毕竟我们是为了使用dubbo,而不是说复杂的理论。希望对初学dubbo的人有所帮助。
下面的图片是官网的截图。服务的提供者向注册中心注册服务,服务的消费者向注册中心订阅服务。监控中心监控服务提供者和消费者。
安装测试步骤分为下面四个大的步骤(安装之前,请确保您的电脑上已经安装centos和jdk):
一、安装注册中心(zookeeper集群),这里我们用zookeeper集群作为注册中心。
二、安装dubbo监控中心。
三、部署dubbo-admin到tomcat。
四、编写测试project。
------------------------------------------------------------------------------------------------------------------------------
一、安装注册中心zookeeper集群。
1.1 将压缩包上传到自己的路径,例如/user/zookeeper,解压 tar zxvf zookeeper-3.4.10.tar.gz
1.2 创建进入解压目录下的conf。例如cd /usr/zookeeper/zookeeper-3.4.10/conf。然后复制zoo_sample.cfg为zoo.cfg,例如:cp zoo_sample.cfg zoo.cfg
1.3 创建集群文件夹,依次执行以下命令,比如:
mkdir -p /user/zookeeperCluster
mkdir -p /user/zookeeperCluster/zk1
mkdir -p /user/zookeeperCluster/zk2
mkdir -p /user/zookeeperCluster/zk3
1.4 复制解压的zookeeper到集群文件夹下 cp /usr/zookeeper/zookeeper-3.4.10 /usr/zookeeperCluster/zk1 -rf
创建目录mkdir -p /usr/zookeeperCluster/zk1/data
创建myid文件 vi myid,进入编辑模式输入1,输入命令wq保存退出。
修改zoo.cfg文件,vi zk1/conf/zoo.cfg,以下图片中红色部分需要修改,wq保存退出。
1.5 复制zk1到zk2和zk3, 例如:cp -rf zk1 zk2,cp -rf zk1 zk3。并修改zk2 zk3中的myid为2和3,修改zoo.cfg中的dataDir分别为zk2和zk3对应路径,修改端口分别为2182和2183。
1.6 进入zkcluster文件夹下,编写shell脚本。vi zkcluster.sh,输入完毕wq保存退出。
至此,第一步搭建zookeeper集群完毕。
-----------------------------------------------------------------------------------------------------------
2.1 创建安装目录,mkdir -p /usr/dubbo
2.1 上传dubbo-monitor-simple-2.5.3-assembly.tar.gz到2.1中创建的文件夹,
并解压tar zxvf dubbo-monitor-simple-2.5.3-assembly.tar.gz -C /usr/dubbo
2.3 修改conf下的配置文件dubbo.properties,见下图红色提示。
至此,第二步安装dubbo监控中心完毕。
------------------------------------------------------------------------------------------------------------
3.1将tomcat压缩包复制到你选择的任意文件夹。比如/usr/tomcat/下。并解压tar zxvf apache-tomcat-7.0.68.tar.gz。
重命名mv apache-tomcat-7.0.68 tomcat-dubbo.
3.2进入到tomcat-dubbo下的ROOT目录cd /usr/tomcat/tomcat-dubbo/webapps/ROOT/,清空所有文件,rm -rf *
3.3 将dubbo-admin-2.5.4.war上传到ROOT目录下,并解压unzip dubbo-admin-2.5.4.war(说明:如果未安装unzip命令,请先yum install unzip)
3.4 进入ROOT目录下的WEB-INF,cd WEB-INF,修改dubbo.properties。如下图,提示。
3.5 修改tomcat对应端口为7005,7777,7009,防止冲突,vi /usr/tomcat/tomcat-dubbo/conf/server.xml,修改完毕wq保存退出。
至此,第三步dubbo管理控制台安装完毕
---------------------------------------------------------------------------------------------------
在进行第四步前,先修改linux的防火墙,开放对应端口,并依此启动zookeeper,dubbo监控中心,dubbo管理控制平台。
首先, vi /etc/sysconfig/iptables,如下图
然后进入zookeepCluster文件夹,cd /usr/zookeepCluster。然后启动 ./zkcluster.sh start
下一步,在进入dubbo监控中心bin目录,cd /usr/dubbo/dubbo-monitor-simple-2.5.3/bin/
启动./start.sh
此时可以在浏览器输入对应的ip和端口,访问监控中心和管理平台,如下图
---------------------------------------------------------------------------------------------------------------
第四步,编写对应的maven工程,进行测试。
4.1 编写dubbo-server-api工程定义接口(选择jar),可以自己任意定义测试接口。
4.2 编写dubbo-provider工程实现接口(选择war),发布服务,pom需要引入相关依赖。
<dependencies>
<!-- 导入dubbo-server服务接口 -->
<dependency>
<groupId>com.superd.dubbo</groupId>
<artifactId>dubbo-server-api</artifactId>
<version>1.0</version>
</dependency>
<!-- dubbo采用spring配置方式,所以需要导入spring容器依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<!-- 排除传递spring依赖 -->
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8089</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
4.3 eclipse先导入dubbo.xsd文件(怎么导入请百度,这篇文章已经够长了),然后编写dubbo-provider.xml(一下示例中的ip,包名自行修改)
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:applicationname="dubbo-provider"/>
<!-- 这里使用的注册中心是zookeeper -->
<dubbo:registryprotocol="zookeeper"address="192.168.56.3:2181,192.168.56.3:2182,192.168.56.3:2183"/>
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocolname="dubbo" port="20880"/>
<!-- 将具体的实现类加入到Spring容器中 -->
<beanid="userServiceImpl"class="cn.gzsxt.dubbo.service.impl.UserServiceImpl"/>
<!-- 将服务接口暴露到dubbo中 -->
<dubbo:serviceinterface="com.project.dubbo.service.UserService"ref="userServiceImpl"/>
</beans>
4.4 编写web.xml
然后启动项目。
4.5 编写dubbo-consumer工程(选择jar),pom依赖与dubbo-provider中的依赖一致,去掉build插件不用复制,并增加下面的依赖。
<!-- 导入spring-test的依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
4.6 编写dubbo-consumer.xml,端口和包名自行修改
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:applicationname="dubbo-consumer"/>
<!-- 这里使用的注册中心是zookeeper -->
<dubbo:registryprotocol="zookeeper"address="192.168.56.3:2181,192.168.56.3:2182,192.168.56.3:2183"/>
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocolname="dubbo"port="20880"/>
<!-- 引用dubbo中的服务 -->
<dubbo:referenceinterface="com.project.dubbo.service.UserService"id="userService"/>
</beans>
4.7 编写测试类,断点测试。
4.8 此时在监控中心、控制台页面,都可以看到相关情况。
---------------------------------------------------------------------------------------
至此,注册中心、监控中心、控制平台、项目测试均已完毕!