环境:
windows10
jdk1.8
tomcat8
maven3.3.3
spring4.3.5
dubbo2.5.6
dubbo-admin2.5.6
zookeeper3.4.10
安装zookeeper
下载地址http://www.apache.org/dyn/closer.cgi/zookeeper/
解压到D盘后进入Conf目录 D:\zookeeper-3.4.10\conf
复制一份zoo_sample.cfg 并改名为 zoo.cfg,因为 Zookeeper在启动时会找这个文件作为默认配置文件
tickTime:这个时间是作为Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir:Zookeeper保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
dataLogDir:Zookeeper 保存日志文件的目录。
clientPort:客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort默认是2181
进入D:\zookeeper-3.4.10\bin目录,双击zkServer.cmd启动注册中心服务
启动后要检查 Zookeeper 是否已经在服务,可以通过 netstat – ano 命令查看是否有你配置的 clientPort 端口号在监听服务
比如 netstat -ano|findstr 2181
安装dubbo-admin
可以去https://github.com/alibaba/dubbo/releases下载源码用Eclipse将dubbo-admin项目打成War包或网络下载War包文件
将dubbo-admin.war包放到Tomcat的Webapps目录下,并启动Tomcat,然后访问http://localhost/dubbo-admin/
登录用户密码可以从WEB-INF下的dubbo.properties文件中看到,
root账号默认密码为root,guest账号默认密码为guest
登录后即可用看到管理界面
建立3个项目工程
zns_provider_api服务接口(用于提供者和消费者共享) jar工程
zns_provider_api_impl服务提供者 war工程
zns_consumer 服务消费者 war工程
zns_provider_api
定义一个用户接口
package com.zns.provider.api; public interface UserService { public String sayHello(String name); }
zns_provider_api_impl
实现接口
package com.zns.provider.api.impl; import com.zns.provider.api.UserService; public class UserServiceImpl implements UserService { @Override public String sayHello(String name) { return "Hello " + name; } }
增加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.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="zns_provider" /> <!-- 使用zookeeper注册中心暴露服务地址 即zookeeper所在服务器ip地址和端口号 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在某个端口暴露服务 默认是20880 --> <dubbo:protocol name="dubbo" port="30000" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.zns.provider.api.UserService" ref="userServiceImpl" /> <!-- 具体的实现bean --> <bean id="userServiceImpl" class="com.zns.provider.api.impl.UserServiceImpl" /> </beans>
需要<import resource="classpath:dubbo-provider.xml"/>
maven pom.xml增加下面依赖
<dependency> <groupId>com.zns</groupId> <artifactId>zns_provider_api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>
zns_consumer
增加dubbo-consumer.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.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="zns_consumer" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" check="false"/> <!-- 生成远程服务代理 --> <dubbo:reference id="userService" interface="com.zns.provider.api.UserService" check="false" /> </beans>
需要<import resource="classpath:dubbo-consumer.xml"/>
maven pom.xml增加下面依赖
<dependency> <groupId>com.zns</groupId> <artifactId>zns_provider_api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>
新增MyTest类测试
public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); UserService uService=(UserService)context.getBean("userService"); String result=uService.sayHello("张三"); System.out.println(result); } }
运行zookeeper
运行服务提供者
运行MyTest里的Main方法 可以看到调用了服务提供的接口。
搭建基本完毕......