目录

dubbo前言

dubbo学习网址

项目dubbo-demo实战篇

(实战一)dubbo-demo-api定义

(实战二)dubbo-demo-provider实现

(实战三)dubbo-demo-consumer实现

dubbo-demo资源下载

本篇实战总结


  • dubbo前言

Dubbo是高性能的,基于java的RPC框架,RPC框架之前的文章有讲过可以看一下。

  • dubbo学习网址

  1. 官网:http://dubbo.io/
  2. 中文网:http://dubbo.apache.org/zh-cn/

进不去请点击中文网,快速开发

  • 项目dubbo-demo实战篇

1)先创建如图所示的项目结构【接口、服务提供者、消费者】

2)dubbo-demo/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.imooc</groupId><artifactId>dubbo-demo</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>dubbo-demo-provider</module><module>dubbo-demo-api</module><module>dubbo-demo-consumer</module></modules><properties><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- spring版本号 --><spring.version>4.2.5.RELEASE</spring.version><!-- log4j日志包版本号 --><slf4j.version>1.7.18</slf4j.version><log4j.version>1.2.17</log4j.version></properties><dependencies><!-- 添加spring核心依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><!-- spring 结束 --><!-- 添加日志相关jar包 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><!-- log end --><!-- zeekeeper注册中心 --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.9</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency><!-- dubbo --><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></dependencies>
</project>
  • (实战一)dubbo-demo-api定义

  1. 根据快速文档新增 dubbo-demo/dubbo-demo-api/src/main/java/org/apache/dubbo/demo/DemoService.java

    package org.apache.dubbo.demo;/*** @Description : api* @Auth : Xuhy* @Date : 2019-02-04* @Time : 21:58*/
    public interface DemoService {String sayHello(String name);
    }
  2.  修改 dubbo-demo/dubbo-demo-api/pom.xml 文件内容,如图所示
  3. 具体 pom.xml 如下
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>dubbo-demo-api</artifactId><groupId>com.imooc</groupId><version>1.0-SNAPSHOT</version>
    </project>
  • (实战二)dubbo-demo-provider实现

  1. Implement service provider

1)根据快速开发文档,创建服务实现类DemoServiceImpl

package org.apache.dubbo.demo.provider;import org.apache.dubbo.demo.DemoService;/*** @Description : 在服务提供方实现接口* @Auth : Xuhy* @Date : 2019-02-04* @Time : 22:14*/
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHello(String name) {return "Hello " + name;}
}
  1. Configure service provider

1.1 配置篇 resource/dubbo-provider.xml值得注意的是将快速开发的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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="hello-world-app"/><!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper--><dubbo:registry address="zookeeper://localhost:2181"/><!-- 使用multicast广播注册中心暴露服务地址 --><!--<dubbo:registry address="multicast://224.5.6.7:1234"/>--><!-- 用dubbo协议在20880端口暴露服务 --><dubbo:protocol name="dubbo" port="20880"/><!-- 声明需要暴露的服务接口 --><dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/><!-- 和本地bean一样实现服务 --><bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
</beans>

1.2 配置篇 新增log4j(resource/log4j.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"><appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n" /></layout></appender><root><level value="INFO" /><appender-ref ref="CONSOLE" /></root>
</log4j:configuration>
  1. Start service provider(准备一个启动类)

 3.1)导入对应pom文件,支持ClassPathXmlApplicationContext.class,如果是这个class报错 再导入

<!-- 导入pom文件jar -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.14.RELEASE</version>
</dependency>

3.2)编写启动类MainProvider

package org.apache.dubbo.demo.provider;import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @Description : Start service provider* @Auth : Xuhy* @Date : 2019-02-04* @Time : 22:23*/
public class MainProvider {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-provider.xml");context.start();System.err.print("启动成功!"); // 按任意键退出System.in.read(); // 按任意键退出}
}

3)启动篇

3.1 如果使用Intellij Idea 广播模式:请加上-Djava.net.preferIPv4Stack=true,也可以利用zookeeper启动

zookeeper3.4.10下载地址:https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.10/(解压到本地,并进入其conf目录,重命名zoo_sample.cfg为zoo.cfg即可,其余无需改动。windows启动方式:zookeeper-3.4.10/bin下的zkServer)

3.2 run MainProvider.java

  • (实战三)dubbo-demo-consumer实现

  1. Consumer.java

    package com.alibaba.dubbo.consumer;import org.apache.dubbo.demo.DemoService;
    import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @Description : 加载Spring配置,并调用远程服务* @Auth : Xuhy* @Date : 2019-02-06* @Time : 17:37*/
    public class Consumer {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");context.start();System.err.println("consumer start");DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理String hello = demoService.sayHello("world"); // 执行远程方法System.out.println( hello ); // 显示调用结果}
    }
  2.  配置篇 resource/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.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --><dubbo:application name="consumer-of-helloworld-app"  /><!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送--><dubbo:registry address="zookeeper://localhost:2181"/><!-- 使用multicast广播注册中心暴露发现服务地址 --><!--<dubbo:registry address="multicast://224.5.6.7:1234" />--><!-- 生成远程服务代理,可以和本地bean一样使用demoService --><dubbo:reference id="demoService" interface="org.apache.dubbo.demo.DemoService" />
    </beans>
  3. 配置篇 resource/log4j.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"><appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n" /></layout></appender><root><level value="INFO" /><appender-ref ref="CONSOLE" /></root>
    </log4j:configuration>

  • dubbo-demo资源下载

下载地址:正在审核中。。。。。

  • 本篇实战总结

遇见问题:

1、加载不出来配置信息,我将provider和consumer的xml文件除了log4j都修改了;

2、启动偶而不成功问题,如果你用了zookeeper启动,都要用它来启动,不能一个广播一个zookeeper;

3、都用广告启动不成功问题,这个我也遇见了,provider用广播,consumer也用广播,启动不成功!不知道为啥,也配置了Vm option,没有用!

所以上面的案例全部修改为zookeeper启动

Dubbo 入门教程与实战(一)上相关推荐

  1. Systemd 入门教程:实战篇

    Systemd 入门教程:实战篇 原文出处: 阮一峰(@ruanyf)   http://blog.jobbole.com/98671/?utm_source=blog.jobbole.com& ...

  2. 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程到实战—持续更新(第三节:鸿蒙的技术特征)

    第三节:鸿蒙的技术特征 每篇内容都有视频讲解,可直接点击观看+关注,持续更新中 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程到实战-持续更新(第二节:鸿蒙OS系统分布式操作) 硬件互助 ...

  3. 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程到实战—持续更新(第二节:鸿蒙OS系统分布式操作)

    老罗带你了解鸿蒙,专注于移动端领域技术的研发和推广,助力鸿蒙在国内技术推广和普及. 每篇内容都有视频讲解,可直接点击观看+关注,持续更新中 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程 ...

  4. 超详细Redis入门教程——Redis命令(上)

    前言 本文小新为大家带来 超详细Redis入门教程--Redis命令(上) 相关知识,具体内容包括Redis 基本命令,Key 操作命令,String 型 Value 操作命令,Hash 型 Valu ...

  5. Linux Capabilities 入门教程--进阶实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...

  6. Linux Capabilities 入门教程--基础实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...

  7. TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。

    转载至:http://www.nanjixiong.com/thread-122211-1-1.html Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习 ...

  8. 前端开发入门教程-HTML标签(上)

    本文素材来源于黑马程序员pink老师的前端教学视频.在此基础上有部分改动. 博客文章: https://blog.manchan.top/post/introduction-to-front-end- ...

  9. Dubbo入门教程,谈谈为什么要用Dubbo?

    Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. Dubbo核心部分包含: 远程通讯:提供对多种基于 ...

最新文章

  1. 关于谷歌自动换行的奇异效果
  2. JS获取浏览器高度 并赋值给类
  3. 进军人工智能,数学基础很重要?
  4. laravel api_如何在现有的Laravel应用中获取即时GraphQL API
  5. jquery微博实例
  6. android apk 防止反编译技术加壳技术(转)
  7. 【C】VC6调试器的使用
  8. 第12期 《博观而约取,厚积而薄发》6月刊
  9. 如何给网页设置自己的字体
  10. 2022“杭电杯”中国大学生算法设计超级联赛(7) 2022杭电多校第七场
  11. 5e检索服务器信息,服务器检索 - 找服玩|Minecraft服务器列表
  12. 从不确定性中寻找“确定性”——一位交管从业者对行业发展趋势的思考
  13. [应用推荐]FreeMind自动生成系统盘的树状图(思维导图)
  14. 周易六十四卦——震为雷卦
  15. Fiddler抓取HTTPs流量
  16. 计算机毕业设计Java后勤管理系统(源码+系统+mysql数据库+lw文档)
  17. 是不正确的python语句_关于Python的if else语句,调用else不正确的问题
  18. JMeter学习(五)---察看结果树和聚合报告指标项详解
  19. 一名SM是怎么炼成的(之一锻炼领导力)
  20. Python:基本语法看这一篇就够了

热门文章

  1. MySQL存储引擎InnoDB架构
  2. displayblock详解
  3. 积微速成计划第一期第一次总结
  4. Windows Server 2012 R2 离线安装 .Net Framework3.5
  5. Android通过DeepLink方式跳转其他App传递参数
  6. UML建模学成在线管理系统
  7. modprobe命令介绍
  8. CSS - 移动端布局(一)关键的前置知识
  9. 烽火ExMobi引领企业移动应用平台浪潮
  10. 用C语言求两个数的最大公约数和最小公倍数