idea创建spring boot集成使用dubbo、zookepper

来源:互联网 发布:英文软件 编辑:程序博客网 时间:2024/05/19 06:49

最近在公司部署一个项目的时候用了zookepper做注册中心的分布部署,心血来潮自己弄一个demo做测试。参考了一些百度的教程

1:zookepper安装部署

下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper

直接tar -zxvf 解压

conf复制 zoo_sample.cfg为zoo.cfg

修改当前安装目录

dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log

添加节点

server.1=localhost:2888:3888(自己的虚拟机没有修改主机名,直接localhost)

其他默认。参数说明:

#tickTime: zookeeper中使用的基本时间单位, 毫秒值.#dataDir: 数据目录. 可以是任意目录.#dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和#dataDir相同的设置.#clientPort: 监听client连接的端口号.

bin目录 sh zkServer.sh start启动。 status可以看到为单机运行状态。


有的zookeeper默认集成了jetty,所以启动时会占用8080端口,查看zookepper.out日志可以看到。所以如果占用了8080端口那么下边如果在同一台服务器上部署tomcat之类的

要注意下。

2:部署dubbo后台(真实应用环境中不需要,这里部署只是为了观察方便)

下载地址:http://github.com/alibaba/dubbo

解压进入admin目录,打包mvn package -Dmaven.skip.test=true

拷贝到tomcat中直接启动。

http://192.168.1.91:8080/dubbo-admin-2.5.6 root root


在后台上可以看到后续你注册的消费者和服务者。

3:创建dubbo服务端

我使用的是idea,为了方便测试所以直接用了spring boot,一键搭建mani启动很方便,有兴趣的可以使用常规springmvc框架集成dubbo测试。




直接新建项目,选择spring Initializr,选择web,一路next finish。框架搭建完成起名dubbo-provider

pom引入所需jar包

<dependency>      <groupId>com.alibaba</groupId>      <artifactId>dubbo</artifactId>      <version>2.4.10</version>      <exclusions>         <exclusion>            <artifactId>spring</artifactId>            <groupId>org.springframework</groupId>         </exclusion>      </exclusions>   </dependency>   <dependency>      <groupId>org.apache.zookeeper</groupId>      <artifactId>zookeeper</artifactId>      <version>3.4.6</version>      <exclusions>         <exclusion>            <artifactId>slf4j-log4j12</artifactId>            <groupId>org.slf4j</groupId>         </exclusion>      </exclusions>   </dependency>   <dependency>      <groupId>com.github.sgroschupf</groupId>      <artifactId>zkclient</artifactId>      <version>0.1</version>   </dependency></dependencies>

创建测试接口

TestService

/** * Created by huiyunfei on 2017/11/1. */public interface TestService {    public String sayHello(String str);}

实现类:

/** * Created by huiyunfei on 2017/11/1. */public class TestServiceImpl implements TestService {    @Override    public String sayHello(String str) {        return "hello word:"+str;    }}


resources下添加dubbo配置文件 dubbo-providers.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="dubbo-provider" owner="dubbo-provider"/>    <!-- 使用zookeeper注册中心暴露服务地址 -->    <dubbo:registry address="zookeeper://192.168.1.91:2181" check="false" subscribe="false"/>    <!-- 用户服务接口 -->    <dubbo:service interface="com.huizhou.service.TestService" ref="testService"/>    <bean id="testService" class="com.huizhou.service.TestServiceImpl"></bean></beans>

具体每个参数的含义自己可以百度,我只做测试,所以很多东西都是直接拷贝的,查一下都知道了所以没有具体研究

启动函数添加配置文件读取

@SpringBootApplication@ImportResource(value = {"classpath:dubbo-providers.xml"})public class DubboApplication {   public static void main(String[] args) {      SpringApplication.run(DubboApplication.class, args);   }}

直接main启动。去dubbo后台观察可以看到提供者和服务已创建。




4:创建dubbo客户端

查了好多使用maven的做这个测试都是建在了同一个项目中,引用了一个共同的api和父类。为了简明结合现实中使用,我直接新建了一个毫无关联的项目。

同3,直接new project dubbo-consumer

pom引入jar包。

新建测试类TestController

 * Created by huiyunfei on 2017/11/1. */@RestController@EnableAutoConfiguration@RequestMapping("/test")public class ClientController {    //@Resource    @Autowired    private TestService testService;    @RequestMapping("/hello")    public String say(){        System.out.println("===============");        return testService.sayHello("success");    }

注意:

这里的TestService使用的是服务端的接口类,如果服务端和客户端在同一个项目中就可以直接引用。

如果和我一样不在同一个项目,这里需要新建一个一模一样的接口类,包括路径。

现实应用中可以把服务端的接口类拷贝过来或者把所有的接口直接打一个jar包出来导入客户端。

新建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="dubbo-consumer"/>    <dubbo:registry check="false" address="zookeeper://192.168.1.91:2181"/>    <dubbo:reference interface="com.huizhou.service.TestService" id="testService"/></beans>

同理启动函数中添加对配置文件的读取

@ImportResource({ "classpath:dubbo-consumer.xml" })

main函数启动。

这里注意,因为我本地直接两个spring boot项目启动,第一个服务端默认占用了8080,所以客户端需要改一下端口,application.properties添加

server.port=8012

在dubbo后台可以查看已经有消费者注册



chrome直接访问客户端接口地址:

http://localhost:8012/test/hello



完成。





























原创粉丝点击