简介
今天咱们来看看怎么利用Spring Boot整合Dubbox来开发去中心化的微服务。
系统环境
本文基于Jdk1.8/Maven 3.3.9/Spring Boot 1.4.2.RELEASE/Dubbo 2.8.5.SNAPSHOT(Dubbox后续开源版本)/ZooKeeper3.4.8
Zookeeper环境搭建
下载并安装启动
下载
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/
解压
tar -zxf zookeeper-3.4.8.tar.gz
修改配置文件
cd zookeeper-3.4.8/conf
cp zoo_sample.cfg zoo.cfg # zookeeper 默认是用../conf/zoo.cfg 如果没有这个文件则报错
vim zoo.cfg
好吧 我们不改了,我们使用默认的配置.哈!
启动
cd zookeeper-3.4.8/bin
./start.sh start #启动zookeeper 关闭: ./start.sh stop
Dubbox环境准备
zookeeper准备好了,先放着 一会再用.下面我们来准备下Dubbox.
dubbox是当当网基于dubbo开源的组件
为什么使用dubbox?
因为dubbox支持更新的spring版本…
Dubbox在maven中央仓库并没有对应的依赖,所以我们需要自己动手将其发布到我们的本地仓库来使用.
下载
我们这次从码云下载
git clone https://git.oschina.net/wuyu15255872976/dubbox.git
编译安装
cd dubbox
mvn clean install -Dmaven.test.skip
等待 … 等待…
之后我们在我们的maven本地仓库/com/alibaba/dubbo/2.8.5-SNAPSHOT中会发现这么一个东西:
dubbo-2.8.5-SNAPSHOT.jar
这个玩意就是我们需要的Dubbx的jar包…
Spring Boot Dubbo引导
dubbox的jar包准备好了,行,咱先放着.一会再用.
下面来介绍下spring-boot-starter-dubbo项目的准备.
我们可能以前在使用dubbo的时候都是用的xml配置.在整合Spring Boot的时候呢是用的@ImportResource
注解来引入的dubbo的xml配置.
但是Spring Boot本身并不推荐xml配置.怎么解决这个矛盾,我们可以自己准备一个Spring Boot Starter dubbo的项目来引导Spring Boot对Dubbo的自动化配置.
下载
git clone https://git.oschina.net/wuyu15255872976/spring-boot-starter-dubbo.git
感谢这位悲伤的大神的开源贡献!. 顶一个,赞两个.
修改pom.xml
- 在环境准备的时候我们说过,我们的项目基于Spring Boot 1.4.2.RELEASE ,但是我们down下来spring-boot-starter-dubbo的时候发现它用的是1.3.6的版本.我们动手自己改下parent的依赖吧.
- 我们发现在pom.xml中基本所有的依赖的
option
都是true
,我懒所以我想在其他项目依赖这个项目的时候不要再写一遍,所以我把<option>true</option>
都给干掉了…… 干不干掉这个倒是随意哈. - 刚上一个环节我们打包并安装到本地库的Dubbox在这个地方需要用上了. 我们修改
dubbo
的版本为2.8.5-SNAPSHOT
- 修改java版本为1.8
完整pom.xml文件如下:
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.4.2.RELEASE</version>
<name>Spring Boot Dubbo Rpc</name>
<description>Spring Boot Dubbo Rpc</description>
<url>http://projects.spring.io/spring-boot/</url>
<organization>
<name>Pivotal Software, Inc.</name>
<url>http://www.spring.io</url>
</organization>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.5-SNAPSHOT</version>
<exclusions>
<exclusion>
<arti