Dubbo入门练习demo(IDEA版)

Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。

因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证了高性能高可用性。

使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。

一、创建基本结构

1、创建maven项目,命名 dubbodemo。

2、创建子模块 api(公共接口)、consumer(服务消费者)、provider(服务提供者)。

、添加依赖

1、在 dubbodemo 的 pom.xml 中添加 dubbo 和 zookeeper 客户端依赖。

<dependencies>
    <!-- dubbo当前最新版 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.6.0</version>
    </dependency>
    <!-- zookeeper客户端 -->
    <dependency>
        <groupId>com.101tec</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.10</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>utf-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

 三、定义接口

1、写接口

api 项目为其他两个项目提供接口,保证服务生产者和服务消费者使用的接口统一,我们在 api 项目中创建包com.myx.demo.dubbo.api,并创建接口DemoService。

2、引用接口
在服务生产者和服务消费者项目中引用接口,保证两端接口一致。分别在两个项目的 pom.xml 中添加如下代码:


    <dependencies>
        <!-- API接口引用 -->
        <dependency>
            <groupId>com.myx</groupId>
            <artifactId>api</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

3、其他依赖

紧急情况下可能需要直接手动调用接口,而生产环境只有服务提供者,消费者暂时不方便操作时,可通过telnet进行触发。

服务提供方引入fastjson依赖:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.51</version>
</dependency>

四、添加实现类以及XML配置

1、在服务提供者包中添加实现类

2、服务提供者配置

将实现类注册到注册中心(只有这样,其他应用才有可能请求到),在 服务提供者包中 src / main / resources 下创建 dubbo-provider.xml 文件,用于配置dubbo服务端注册,代码如下:

<?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应用程序命名-->
    <dubbo:application name="dubbo-demo-provider"/>

    <!--dubbo注册地址-->
    <dubbo:registry address="zookeeper://localhost:2181"/>

    <!--dubbo协议地址-->
    <dubbo:protocol name="dubbo" port="20880"/>

    <!--接口声明-->
    <dubbo:service interface="com.myx.demo.dubbo.api.DemoService" ref="demoService"/>
    <bean id="demoService" class="com.myx.demo.dubbo.provider.DemoServiceImpl"/>
</beans>

3、服务消费者配置

添加服务消费者包中配置文件 dubbo-consumer.xml 放于 src / main / resources 下,内容与服务端相似,只不过不需要暴露接口,而是引用接口,代码如下: 

<?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应用程序命名-->
    <dubbo:application name="dubbo-demo-provider"/>

    <!--dubbo注册地址-->
    <dubbo:registry address="zookeeper://localhost:2181"/>

    <!--接口引用-->
    <dubbo:reference interface="com.myx.demo.dubbo.api.DemoService" id="demoService"/>
</beans>

 

五、注册中心

因为要对服务进行注册,所以需要添加注册中心。此处添加注册中心zookeeper,官网下载 zookeeper 后解压,将conf文件夹下的 zoo_sample.cfg 重命名为 zoo.cfg,之后在命令提示符下切换至bin目录下,执行 .\zkServer.cmd。

看到如下提示后表示启动成功:

2019-10-01 23:12:59,007 [myid:] - INFO  [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181

六、 测试

1、按照上述要求启动 zookeeper

2、启动服务端

在服务端下添加 Provider.java 

 

3、客户端测试

在 src / main / java 下创建包 com.myx.demo.dubbo.api,并创建文件 consumer.java,main 方法代码如下: 

4、结果显示

执行后在控制台查看结果,如下所示,用户名后成功添加字符串,表示服务提供者和服务消费者都测试成功。

参考文章:https://www.jianshu.com/p/b492ef5d4b98

代码:https://github.com/MiaoPlus/dubbodemo.git

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章