开发接口、Dubbo 服务端、Dubbo 客户端

先说明两点,本节主要是开发知识,目的在于让大家深入理解测试的前提,先不用弄清楚具体的知识点,但是希望读者可以按照我的搭建思路模仿一遍,最好可以理解以下两个的开发思路。

  • 服务提供者、消费者、接口架构分离,但是相互依赖;
  • 所有与工程管理相关的内容都使用 Maven 进行。

建立思路

建立三个工程,分别为:

  • 定义一个接口工程,主要是作为模板;
  • 创建一个服务提供者,暴露 Dubbo 服务;
  • 创建一个服务消费者,调用 Dubbo 服务。

要求这三个工程都建立为 Maven 工程,可以供其相互引用。

接口工程创建

具体过程如下。

(1)通过 Eclipse 创建一个 Maven 工程(创建过程请参考服务提供者工程),命名为:interface-test;在其下面建立一个包,命名为:com.interface.demo,然后只新建一个接口,命名为 DubboService.java;

(2)DubboService.java 文件的代码如下,只声明一个 print() 方法:

package com.inter.face.demo;

public interface DubboService {
public abstract void print();
}

(3)选择此工程 | 右键单击 | Run as | Maven install 选项,将其打为 jar 包,以供服务提供者工程与消费者工程进行引用:

生成 jar 包后,会在工程的 target 目录下进行显示:

(4)将 interface-test-0.01-SNAPSHOT.jar 这个 jar 放到本地 Maven 仓库中, 放置方法为:

  • cd 到 interface-test-0.01-SNAPSHOT.jar 所在目录下,

执行 mvn install:install-file -Dfile=interface-test-0.0.1-SNAPSHOT.jar -DgroupId=com.test.demo -DartifactId=interfaceTest -Dversion=0.0.1 -Dpackaging=jar 命令即可;

  • 执行成功,可以在 Maven 的本地仓库中找到此 jar 包:

完成以上四步,接口工程即创建完毕。

Dubbo 服务提供者创建

下面我们搭建开发一个简单的 Dubbo 服务提供者,具体过程如下:

(1)通过 Eclipse 创建一个 Maven 工程,命名为:dubbo-provider。

简单说下创建过程:

  • File | new | Maven 工程(最新的 Eclipse4.7.2 即会显示),如果 new 里面没有显示 Maven 工程,就到 new | Other 里面去找:

  • New Maven Project 界面,选择下图标注的版本,单击 next 按钮即可:

  • 设置 dubbo-provider 的 Maven 依赖:

按照上图中的标注内容填写后,单击 Finish 按钮,创建完成,其目录结构如下所示:

(2)在 pom.xml 文件中引入 interface-test-0.01-SNAPSHOT.jar、dubbo 服务的 jar、zkclient 的 jar、spring-beans.jar:

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
       <groupId>com.101tec</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.4</version>
      </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.5.3</version>
    </dependency>
    <dependency>
      <groupId>com.interface.demo</groupId> 
  <artifactId>interface-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
  <artifactId>spring-beans</artifactId>
  <version>3.2.3.RELEASE</version>
    </dependency>
  </dependencies>

需要注意的是:所有的 Maven 依赖的 jar 都必须写在: <dependencies> </dependencies>之间,还需要说明的是 Maven 通过 pom.xml 文件所引用的 jar 必须先存在于本地的 Maven 仓库中,或在一个私服中。

(3)在 src/main/java 下的包 com.dubbo.provider.dubbo_provider 下新建接口 DubboService.java 的实现类 DubboServiceImpl.java。其源码为:

public class DubboServiceImpl implements DubboService {

    public void print() {
        System.out.println("我是服务提供者");
    }
}

(4)新建源文件夹 src/main/resources,在其下面新建 applicationProvider.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">
<!-- 具体实现的bean --> 
<bean id="dubboservice" class="com.dubbo.provider.dubbo_provider.DubboServiceImpl" /> 
<!-- 定义应用名称 --> 
<dubbo:application name="dubbo-provider"/> 

<!--zk注册中心的地址-->   
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> 

<!-- 用dubbo协议在21000端口暴露服务 --> 
<dubbo:protocol name="dubbo" port="21000" /> 

<!-- 配置服务接口 --> 
<dubbo:service interface="com.inter.face.demo.DubboService" ref="dubboservice" /> 

</beans>

(5)在 src/test/java 下的包 com.dubbo.provider.dubbo_provider 下新建启动服务的测试类 TestProvider.java;源码如下:

public class TestProvider {
public static void main(String[] args) throws Exception {
    //获得Spring中定义的bean对象,此代码就是读取我们配置的服务提供者文件
    ClassPathXmlApplicationContext context=  
            new ClassPathXmlApplicationContext("classpath:applicationProvider.xml");
    //
    context.start();
    System.out.println("任意键退出");   
    System.in.read();  
}
}

(6)启动 Zookpeer,然后启动 TestProvider.java,验证注册 Zookpeer 成功:

可见已经成功注册到 ZK 上。

然后选择此工程 | 右键单击 | Run as | Maven install 命令,将其打为 jar 包,此时此工程的目录结构如下:

Dubbo 消费者创建

下面进行消费者创建,具体步骤如下:

(1)通过 Eclipse 创建一个 Maven 工程,命名为:dubbo-consumer(创建过程请参考 dubbo-provider):

(2)将服务提供者的 pom.xml 文件直接复制给它;

(3)新建源文件夹 src/main/resources,在其下面新建 applicationConsumer.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"/> 

<!--zk注册中心的地址-->   
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> 

<!-- 用dubbo协议在21000端口暴露服务 --> 
<dubbo:protocol name="dubbo" port="21000" /> 

<!-- 配置服务接口 --> 
<dubbo:reference interface="com.inter.face.demo.DubboService" id="dubboservice" /> 

</beans>

(4)在 src/test/java 下的包 com.consumer.demo.dubbo_consumer 下新建调用服务提供者的测试类 TestConsumer.java,源码如下:

public class TestConsumer {
public static void main(String[] args) {
     ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationConsumer.xml");  
     context.start();  
     DubboService demoService = (DubboService)context.getBean("dubboservice");   
     demoService.print();
}
}

(5)运行 TestConsumer.java,验证是否可以调通服务提供者:

然后选择此工程 | 右键 | Run as | Maven install,将其打为 jar 包,此时此工程的目录结构如下:

致此,接口、Dubbo 消费者、Dubbo 服务者就开发完成了。

源码地址

源码下载请单击这里

总结

本章意在让大家掌握 Dubbo 的开发原理,而后深刻理解使用 JMeter 测试 Dubbo 服务的过程;当然如果您正在测试 Dubbo 项目,那么这一章对您的帮助是不言而喻的,如果没在使用 Dubbo,先行理解即可,毕竟解决方案要作用于实际项目才能发挥其最大作用。

posted @ 2018-11-22 11:35  长安。  阅读(2326)  评论(0)    收藏  举报