2019年05月21日 星期二

Dubbo干货(1)Spring集成Dubbo

java 耗子睡着了 24阅读 0评论

前置条件

熟悉Spring开发和配置。

Dubbo官网学习地址:点击学习

环境准备

开发软件:IDEA 2019

JDK:1.8

Spring全家桶:4.3.24.RELEAS

Dubbo:2.5.7(阿里巴巴

Zookeeper:3.4.14

zkclient:0.11

slf4j-log4j12

安装&启动Zookeeper

下载Zookeeper(点击进入清华Zookeeper镜像站),解压到本地目录,进入解压目录/bin,双击zkServer.cmd(通过cmd命令行界面执行)。Unix系统同学请执行 zkServer.sh 脚本文件。执行后,命令行界面如下则表示启动成功。

创建learnDemo项目

创建learnDemo项目,new project如图,填写artifactId、groupId、moduleName和项目地址,完成父项目创建。

新建项目后,修改pom文件,添加相关依赖的配置,供子Module使用,避免重复配置。

创建provider-api

因为服务提供者(Provider)需要暴露服务API接口给服务消费者(Consumer),生产环境需要将Provider项目中包含暴露服务API的jar包发布(例如:Maven仓库)供消费者使用。这里将生产者和消费者做在一个项目内,使用不同的Module拆分,将Provider的API单独创建一个Module,由Provider和Consumer分别引用。

新建Module,如图创建provider-api模块:

在provider-api模块中新建server包,在包下创建接口 ITestService,用于定义Provider服务提供的功能定义。

创建provider

第一步,新建模块

创建生产者。新建Module,如图创建provider模块:

注:这里创建的是web项目,建议选择maven-archetype-webapp 模板,会自动生成 web目录。如果不选择, 也可以创建Maven项目,手动创建相关目录并进行配置。

第二步,添加api模块依赖

修改provider项目pom文件,添加对provider-api模块的引用。

第三步,添加日志配置,web容器配置

修改web.xml,添加Spring IoC容器配置和DispatcherServlet相关配置,此处省略,不会的我只能理解你不了解Spring,请先自行百度。

在Resources目录下创建 log4j.properties 文件,用于打印日志,文件内容如下:

第四步,创建服务实现类

新建server包,在包下新建服务实现类 TestServerImpl,实现 TestService 接口并实现其中的接口方法

第五步,添加dubbo配置

在Resources目录下新建 application-context.xml,添加如下配置

创建consumer

创建服务消费者

第一步~第三步

同Provider,此处省略。

第四步,添加dubbo配置

在Resources目录下新建 application-context.xml,添加如下配置

第五步,实现服务调用逻辑

新建 TestController,注入并调用服务接口业务方法。

运行前Tomcat配置

添加两个Tomcat启动配置,以Provider为例,Consumer类似。

注:两个Tomcat启动配置,各自HTTP端口和JMX端口不能一致,可以修改为8080和8081

启动服务并调用Consumer服务

先后启动Provider和Consumer,启动时系统会自动向注册中心注册或订阅服务,会有日志打印,如图表示启动成功:

使用浏览器访问Consumer接口,测试服务是否正常调用

一些坑

  1. Dubbo的版本选择要慎重,有一些报错原因并不是代码书写问题,而是版本不兼容导致,详细请查看Dubbo相关Q&A
  2. 启动前,注意本地回环地址配置,服务在注册时获取的注册中心地址有时默认会获取为为局域网地址,此时可以尝试关闭本机防火墙,配置局域网内端口转发等
  3. Zookeeper,zkclient包一定要引,否则启动或接口调用时会报错
  4. 提示 No Provider *** 90%的原因时因为Provider没有注册到注册中心,可以尝试查看。剩下10%是因为本地回环地址的原因,我踩地雷了….

 总结

半小时就可以搞定,结果我搞了一天半,原因在于对于Dubbo一些坑的摸索,其中因本地回环地址导致服务注册无法调用服务,提示服务未注册或无法启动等情况层出不穷,相信很多同学也像我一样遇到了问题。

通过这篇文章,总结了一下Dubbo和Spring整合的过程,希望能引领大家初尝Dubbo的味道。Dubbo系列将持续更新,不会很系统,接下来会列一些采坑集锦。

您必须 登录 才能发表评论!