dubbo是国内JAVA开源框架中,一款比较有名的服务化框架,我们在SOA架构的时候,一般会使用dubbo作为基础构建,先看下dubbo框架的基本架构图:
provider就是服务的提供方,接下来,我们将使用lion项目来实现一个基于dubbo的服务端。
1 引入dubbo的依赖
项目中引入依赖,我们一般会在父级项目中做一个声明,也就是在dependencyManagement元素中加入dependency,这个仅仅是个声明,当我们在子模块中使用的时候,就会触发真实的从仓库中拉取jar包到项目中。
我们先修改lion父级目录下的pom文件,添加如下一些依赖的声明
其中有一些是对本项目自身模块的一些声明,这里集中的声明,是为了便于版本的控制。我们重点是引入zkclient,zookeeper和dubbo这三个依赖。
2 在lion-service模块引入zkclient,zookeeper和dubbo这三个依赖
可以看到,在使用的时候就不需要加上版本依赖了。
为什么要在service模块引入这几个依赖,因为后面我会在service层对暴露dubbo服务的参数做配置。
3 lion-common模块依赖spring-context
4lion-export层依赖lion-domain层
5 lion-service层依赖lion-export层和lion-common
6 lion-web层依赖lion-service层
7 lion-export层定义接口
package org.lion.export;
import org.lion.domain.HelloDomain;
public interface HelloService {
HelloDomain sayHello(String userName);
}
8 lion-service层实现接口
package org.lion.service;
import java.util.Date;
import org.lion.domain.HelloDomain;
import org.lion.export.HelloService;
import org.springframework.stereotype.Service;
@Service("helloService")
public class HelloServiceImpl implements HelloService{
public HelloDomain sayHello(String userName) {
HelloDomain helloDomain=new HelloDomain();
helloDomain.setMessage("你好");
helloDomain.setName(userName);
helloDomain.setRightTime(new Date());
return helloDomain;
}
}
9 lion-service层配置暴露dubbo服务
在src/main/resource目录下定义配置文件
spring-dubbo.xml中主要是对注册中心的声明的配置
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
">
spring-provider.xml中主要是对将要暴露的服务的声明与配置
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
">
10 lion-common模块增加配置类,从而在项目启动后加载到这些配置文件
package org.lion.common.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@Configuration
@ImportResource("classpath:dubbo/*.xml")
public class DubboConfig {
}
11 lion-web中增加必要的配置参数
在lion-web模块的src/main/resources下创建application.properties文件,内容如下
server.name=lion
dubbo.port=17865
zookeeper.address=127.0.0.1:2181
dubbo.version=zx
dubbo.group=center
dubbo.timeout=6000
到此,代码层面的准备已经完成,接下来我们就可以启动项目,暴露服务了,但是dubbo的服务一般要有一个注册中心来负责存储服务端的相关配置,我们在依赖的时候,选择的是zookeeper,因此,我们要在本地启动一个zookeeper。
另外,dubbo还提供了一个后台系统dubbo-admin,用来管理服务和调用方,我们可以将其下载下来并运行起来。
12 启动zookeeper
我们进入bin目录,然后执行 ./start.sh start命令,就可以启动zk了。可以通过命令
ps -ef|grep zookeeper来确定是否启动成功了。
13 使用tomcat启动dubbo-admin
将dubbo-admin的war包丢到tomcat的webapp目录下,启动tomcat就好了,启动后,在浏览器中输入地址: http://localhost:8081/dubbo-admin-2.5.4/访问就好了,注意端口请换成你自己定义的端口,浏览器会弹框让你输入账户和密码,输入 用户名 root,密码 root
看到这个页面,就是启动成功了。
这些所需要的war和工具,我会在文章的最后提供网盘下载地址,你们不用自己再去搜了。
14 准备工作也准备好了,我们启动我们的lion项目吧
找到Application.java,右击,Run as,java application
启动成功后,我们到dubbo-admin上看一下,我们的服务是否存在
可以看到,我们的服务已经注册上去了,成功了。
所需文件下载地址:
链接: https://pan.baidu.com/s/1skY8LSL 密码: jtrj
代码地址:https://github.com/BruceZhangXL/lion