dubbo(一)dubbo+zookeeper 之 Hello World
2017-03-11 14:52
246 查看
转载自:http://blog.csdn.net/qq315737546/article/details/52005123
以前2个项目交互,一直用的httpclient,繁琐的很. 用dubbo来做RPC确实好太多啦. 先把这个demo记录下来.
操作步骤:
1.安装zookeeper,下载dubbo-admin的war包.
2.写代码. 分为 接口,提供者,消费者 3个模块
3.测试+后台管理查看
源码地址:
https://code.csdn.net/qq315737546/dt1-api/tree/master
https://code.csdn.net/qq315737546/dt1-provider/tree/master
https://code.csdn.net/qq315737546/dt1-consumer/tree/master
1.安装zookeeper,下载dubbo-admin的war包.
1) zookeeper下载地址http://www.apache.org/dyn/closer.cgi/zookeeper/, 最新版已经是3.5.2了,
我下载的3.4.8
下载完成后,解压,然后找到配置文件 D:\zookeeper-3.4.8\conf\zoo_sample.cfg ,将文件改名为zoo.cfg, 把里面的dataDir地址也改一下. dataDir=D:/zookeeper-3.4.8/tmp
启动zookeeper.
[html] view
plain copy
print?
d:
cd zookeeper-3.4.8\bin
zkServer.cmd
如果不报错,则说明安装成功. 可以看到上面默认读取了 zoo.cfg文件.
2) 下载 dubbo-admin.war
dubbo官网上的下载链接都不能用,只好去网上下载了. 我也上传了一份到CSDN.http://download.csdn.net/detail/qq315737546/9584233
下载后,找到 tomcat的\webapps\ROOT 目录, 将下面内容删除,然后换上这个war包就可以了.
启动tomcat,访问 http://localhost:8080 , 会让输入用户名密码. 在 WEB-INF\dubbo.properties 里面有 root和guest 2个用户,密码默认和用户名一样.
2.写代码. 分为 接口,提供者,消费者 3个模块
dubbo提供者需要 向外发布接口, 消费者需要调用接口, 所以这2个模块都需要引用接口, 这时候将接口单独出来维护, 供提供者和消费者使用.
我们来建立3个项目.分别是
[html] view
plain copy
print?
dt1-api
dt1-provider
dt1-consumer
1) 首先建立接口项目, dt1-api
这个项目最后会当做jar被使用,所以在pom.xml中配置为jar
[html] view
plain copy
print?
<modelVersion>4.0.0</modelVersion>
<groupId>com.dingcheng</groupId>
<artifactId>dt1-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dt1-api</name>
这个项目很简单,只有一个interface
[java] view
plain copy
print?
package com.dingcheng.user.service;
public interface UserService {
public String hello(String name);
public String test(String name);
}
2)建立提供者项目, dt1-provider
首先pom.xml中需要引入 api.jar 以及 dubbo的jar
[html] view
plain copy
print?
<modelVersion>4.0.0</modelVersion>
<groupId>com.dingcheng</groupId>
<artifactId>dt1-provider</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>dt-consumer Maven Webapp</name>
<url>http://maven.apache.org</url>
[html] view
plain copy
print?
<dependency>
<groupId>com.dingcheng</groupId>
<artifactId>dt1-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.8</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
这里注意引入dubbo的时候,需要把它自带的spring包给过滤掉,因为自带的版本太低,会有冲突.
然后实现刚才api里面的接口.
[java] view
plain copy
print?
package com.dingcheng.user.service.impl;
import org.springframework.stereotype.Service;
import com.dingcheng.user.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService{
@Override
public String hello(String name){
return "hello :"+name;
}
@Override
public String test(String name) {
return "test :"+name;
}
}
然后就开始配置dubbo.xml, 向外提供服务.
[html] view
plain copy
print?
<!-- 提供方应用信息,用于计算依赖关系, 名称随便就可以 -->
<dubbo:application name="dt1_provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.dingcheng.user.service.UserService" ref="userService" />
说明:
dubbo:registry 标签一些属性的说明:
1)register是否向此注册中心注册服务,如果设为false,将只订阅,不注册。
2)check注册中心不存在时,是否报错。
3)subscribe是否向此注册中心订阅服务,如果设为false,将只注册,不订阅。
4)timeout注册中心请求超时时间(毫秒)。
5)address可以Zookeeper集群配置,地址可以多个以逗号隔开等。
dubbo:service标签的一些属性说明:
1)interface服务接口的路径
2)ref引用对应的实现类的Bean的ID
3)registry向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A
4)register 默认true ,该协议的服务是否注册到注册中心。
至此,提供者已经可以了. 我们放在tomcat下运行. 然后去登录管理后台,可以看到如下图所示.
3)建立提供者项目, dt1-consumer
首先 pom.xml中需要引入 api.jar 以及 dubbo的jar. 可dt1-provider一样.
然后 我们写个action,消费者,用来调用刚才的服务
[java] view
plain copy
print?
package com.dingcheng.user.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dingcheng.user.service.UserService;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/hello.action")
@ResponseBody
public Map<String, Object> hello(String name) {
String result = userService.hello(name);
Map<String, Object> hm = new HashMap<String, Object>();
hm.put("name", result);
return hm;
}
@RequestMapping("/test.action")
@ResponseBody
public Map<String, Object> tet(String name) {
String result = userService.test(name);
Map<String, Object> hm = new HashMap<String, Object>();
hm.put("name", result);
return hm;
}
}
然后就配置dubbo.xml, 指定提供者
[html] view
plain copy
print?
<!-- 提供方应用信息,用于计算依赖关系,名称无所谓 -->
<dubbo:application name="dt1_constumer" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="userService" interface="com.dingcheng.user.service.UserService" check="false"/>
说明:
dubbo:reference 的一些属性的说明:
1)interface调用的服务接口
2)check 启动时检查提供者是否存在,true报错,false忽略
3)registry 从指定注册中心注册获取服务列表,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔
4)loadbalance 负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用
至此,消费者已经可以了. 我们放在tomcat下运行. 然后去登录管理后台,可以看到如下图所示.
3.测试+后台管理查看
访问http://localhost:8110/dt1-consumer/user/hello.action?name=123456 (我改了端口号)
后台管理在步骤2中已经看到了不少,剩下的功能就慢慢摸索吧.
源码地址:
https://code.csdn.net/qq315737546/dt1-api/tree/master
https://code.csdn.net/qq315737546/dt1-provider/tree/master
https://code.csdn.net/qq315737546/dt1-consumer/tree/master
以前2个项目交互,一直用的httpclient,繁琐的很. 用dubbo来做RPC确实好太多啦. 先把这个demo记录下来.
操作步骤:
1.安装zookeeper,下载dubbo-admin的war包.
2.写代码. 分为 接口,提供者,消费者 3个模块
3.测试+后台管理查看
源码地址:
https://code.csdn.net/qq315737546/dt1-api/tree/master
https://code.csdn.net/qq315737546/dt1-provider/tree/master
https://code.csdn.net/qq315737546/dt1-consumer/tree/master
1.安装zookeeper,下载dubbo-admin的war包.
1) zookeeper下载地址http://www.apache.org/dyn/closer.cgi/zookeeper/, 最新版已经是3.5.2了,
我下载的3.4.8
下载完成后,解压,然后找到配置文件 D:\zookeeper-3.4.8\conf\zoo_sample.cfg ,将文件改名为zoo.cfg, 把里面的dataDir地址也改一下. dataDir=D:/zookeeper-3.4.8/tmp
启动zookeeper.
[html] view
plain copy
print?
d:
cd zookeeper-3.4.8\bin
zkServer.cmd
如果不报错,则说明安装成功. 可以看到上面默认读取了 zoo.cfg文件.
2) 下载 dubbo-admin.war
dubbo官网上的下载链接都不能用,只好去网上下载了. 我也上传了一份到CSDN.http://download.csdn.net/detail/qq315737546/9584233
下载后,找到 tomcat的\webapps\ROOT 目录, 将下面内容删除,然后换上这个war包就可以了.
启动tomcat,访问 http://localhost:8080 , 会让输入用户名密码. 在 WEB-INF\dubbo.properties 里面有 root和guest 2个用户,密码默认和用户名一样.
2.写代码. 分为 接口,提供者,消费者 3个模块
dubbo提供者需要 向外发布接口, 消费者需要调用接口, 所以这2个模块都需要引用接口, 这时候将接口单独出来维护, 供提供者和消费者使用.
我们来建立3个项目.分别是
[html] view
plain copy
print?
dt1-api
dt1-provider
dt1-consumer
1) 首先建立接口项目, dt1-api
这个项目最后会当做jar被使用,所以在pom.xml中配置为jar
[html] view
plain copy
print?
<modelVersion>4.0.0</modelVersion>
<groupId>com.dingcheng</groupId>
<artifactId>dt1-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dt1-api</name>
这个项目很简单,只有一个interface
[java] view
plain copy
print?
package com.dingcheng.user.service;
public interface UserService {
public String hello(String name);
public String test(String name);
}
2)建立提供者项目, dt1-provider
首先pom.xml中需要引入 api.jar 以及 dubbo的jar
[html] view
plain copy
print?
<modelVersion>4.0.0</modelVersion>
<groupId>com.dingcheng</groupId>
<artifactId>dt1-provider</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>dt-consumer Maven Webapp</name>
<url>http://maven.apache.org</url>
[html] view
plain copy
print?
<dependency>
<groupId>com.dingcheng</groupId>
<artifactId>dt1-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.8</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
这里注意引入dubbo的时候,需要把它自带的spring包给过滤掉,因为自带的版本太低,会有冲突.
然后实现刚才api里面的接口.
[java] view
plain copy
print?
package com.dingcheng.user.service.impl;
import org.springframework.stereotype.Service;
import com.dingcheng.user.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService{
@Override
public String hello(String name){
return "hello :"+name;
}
@Override
public String test(String name) {
return "test :"+name;
}
}
然后就开始配置dubbo.xml, 向外提供服务.
[html] view
plain copy
print?
<!-- 提供方应用信息,用于计算依赖关系, 名称随便就可以 -->
<dubbo:application name="dt1_provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.dingcheng.user.service.UserService" ref="userService" />
说明:
dubbo:registry 标签一些属性的说明:
1)register是否向此注册中心注册服务,如果设为false,将只订阅,不注册。
2)check注册中心不存在时,是否报错。
3)subscribe是否向此注册中心订阅服务,如果设为false,将只注册,不订阅。
4)timeout注册中心请求超时时间(毫秒)。
5)address可以Zookeeper集群配置,地址可以多个以逗号隔开等。
dubbo:service标签的一些属性说明:
1)interface服务接口的路径
2)ref引用对应的实现类的Bean的ID
3)registry向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A
4)register 默认true ,该协议的服务是否注册到注册中心。
至此,提供者已经可以了. 我们放在tomcat下运行. 然后去登录管理后台,可以看到如下图所示.
3)建立提供者项目, dt1-consumer
首先 pom.xml中需要引入 api.jar 以及 dubbo的jar. 可dt1-provider一样.
然后 我们写个action,消费者,用来调用刚才的服务
[java] view
plain copy
print?
package com.dingcheng.user.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dingcheng.user.service.UserService;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/hello.action")
@ResponseBody
public Map<String, Object> hello(String name) {
String result = userService.hello(name);
Map<String, Object> hm = new HashMap<String, Object>();
hm.put("name", result);
return hm;
}
@RequestMapping("/test.action")
@ResponseBody
public Map<String, Object> tet(String name) {
String result = userService.test(name);
Map<String, Object> hm = new HashMap<String, Object>();
hm.put("name", result);
return hm;
}
}
然后就配置dubbo.xml, 指定提供者
[html] view
plain copy
print?
<!-- 提供方应用信息,用于计算依赖关系,名称无所谓 -->
<dubbo:application name="dt1_constumer" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="userService" interface="com.dingcheng.user.service.UserService" check="false"/>
说明:
dubbo:reference 的一些属性的说明:
1)interface调用的服务接口
2)check 启动时检查提供者是否存在,true报错,false忽略
3)registry 从指定注册中心注册获取服务列表,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔
4)loadbalance 负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用
至此,消费者已经可以了. 我们放在tomcat下运行. 然后去登录管理后台,可以看到如下图所示.
3.测试+后台管理查看
访问http://localhost:8110/dt1-consumer/user/hello.action?name=123456 (我改了端口号)
后台管理在步骤2中已经看到了不少,剩下的功能就慢慢摸索吧.
源码地址:
https://code.csdn.net/qq315737546/dt1-api/tree/master
https://code.csdn.net/qq315737546/dt1-provider/tree/master
https://code.csdn.net/qq315737546/dt1-consumer/tree/master
相关文章推荐
- dubbo学习教程(一):完成入门第一个hello world程序【基于zookeeper】
- dubbo(一)dubbo+zookeeper 之 Hello World
- Dubbo+Zookeeper简介
- (三)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - maven模块规划
- Dubbo : ZooKeeper安装配置(一)
- Spring Boot 集成Dubbo+Zookeeper实现分布式架构
- 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(二)
- 170417、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 以zookeeper为注册中心springmvc集成dubbo的服务实现
- [dubbo实战] dubbo+zookeeper伪集群搭建 (转)
- dubbo系列(二)——dubbo+zookeeper+spring注解方式集成
- Java集群优化——dubbo+zookeeper构建高可用分布式集群
- window安装 Dubbo 注册中心(Zookeeper-3.4.6)
- MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建
- Dubbo,ZooKeeper,Redis,FastDFS,ActiveMQ,Keepalived,Nginx,Hudson
- 13. Dubbo原理解析-注册中心之Zookeeper协议注册中心
- 笔记:zookeeper Hello World
- 分布式服务框架Dubbo+Zookeeper
- Dubbo与Zookeeper、Spring框架的整合