Dubbo 是一个RPC框架,主要提供服务之间的发现注册功能,有关Dubbo相关实现细节不再本片的介绍范围。此文主要介绍如何在本机上搭建一个Dubbo初始的环境。我们知道Dubbo是提供服务之间的注册发现功能,他的注册发现功能是通过注册中心实现的,Dubbo官方推荐的注册中心是Zookper,所以我们先要在本地搭建一个Zookeeper,有了他就可以实现服务之间的注册发现。这时候Dubbo的框架就像是一个黑盒子我们很难指导里边发生了什么,这时候就需要我们的监控工具Dubbo-admin。有了这两个之后就可以通过我们本地的IDE搭建Dubbo的Customer与Provider
一、搭建Zookeeper
1、下载适当文件
下载的时候选择tar.gz的,这个是现在完成之后可以直接用的,但是应该是3.5之后我们应该选择带bin的,否则启动的时候会卡死砸死一个地方。现在完成之后进行解压。
2、更改相关配置文件
进入conf目录、zoo_sample.cfg,复制一份出来并改名为zoo,zoo_sample.cf就像是系统给我们的一个配置模板
更改端口号与特定目录,data、log的文件
3、启动并测试
第二部出现Welcome to Zookeeper的时候代表Zookeeper成功启动
二、安装Dubbo-admin
1、下载代码包
2、文件打包
文件一定是要在解压出来的文件的根目录先打包,在原来打包的时候打在了dubbo-admin-server下面,程序是如何也启动不起来的,但是打包生成的文件却是在dubbo-admin-server的target下的。打包指令:
mvn clean package -U -Dmaven.test.skip=true
3、启动jar
在最新的版本中项目dubbo-admin好像是采用了前后端分离,所以打包以及部署的时候可能有所区别。同时按照我们的这个教程打出来的是jar包如果先要达成war包应该下载相应的源码(应该是dubbo的),现在完之后再进行相关的打包操作,当生成war包之后再部署到tomcat中。
java -jar dubbo-admin-0.2.0-SNAPSHOT_32.jar
jar包的位置是在:
三、创建Customer与Provider工程
1、概述
这里的项目建议创建成父子目录的结构形式,依赖这样这我们做开发与测试的时候方便,不用在多个窗口之间来回切换;再这就是这也是微服务架构下的一个形式。有关父子工程的创建可以参考文章:
2、项目相关的Pom文件
<?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">
<parent>
<artifactId>dubbo-demo-annotation</artifactId>
<groupId>com.end</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.end</groupId>
<artifactId>dubbo-demo-annotation-provider</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.end</groupId>
<artifactId>dubbo-demo-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-registry-zookeeper -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-zookeeper</artifactId>
<version>2.7.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-metadata-report-zookeeper -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-metadata-report-zookeeper</artifactId>
<version>2.7.3</version>
</dependency>
</dependencies>
</project>
这里面重要的一个就是引入共同的api依赖,即dubbo-demo-api,在消费者端引入与SpringWeb相关的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.0.RELEASE</version>
<scope>compile</scope>
</dependency>
3、Provider配置文件
dubbo:
application:
name: dubbo-annotation-provider
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
port: 20881
metadata-report:
address: zookeeper://127.0.0.1:2181
4、Customer配置文件
dubbo:
application:
name: dubbo-annotation-consumer
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
port: 20882
metadata-report:
address: zookeeper://127.0.0.1:2181
server:
port: 8089
5、IDEA下的多项目同时运行
所有要启动的子项目都需要配置,配置完之后如果不生效的话要记得重启IDEA,完成之后的运行效果为: