SpringBoot+ZooKeeper+Dubbo的搭建
综述:Dubbo是一个RPC(Remote Procedure Call,远程过程调用)框架,它区别于本地过程调用。本地过程调用是在一个单一系统内方法之间的调用,而RPC实现的是在分布式系统中一个系统调用另一个系统的方法,Dubbo是RPC的一个实现。在Springcloud中,我们可以使用Eureka作为服务注册中心,来管理和协调各个微服务,同样也可以通过配置的方式使用zookeeper作为注册中心。使用SpringBoot+Dubbo+Zookeeper组合可以搭建一个分布式系统,下面介绍如何搭建一个SpringBoot+Dubbo+Zookeeper的环境。
正文
1.1.1 Zookeeper下载
Zookeeper下载地址
https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
1.1.2 修改配置文件
下载完成后选择一个目录进行解压
复制conf目录下的zoo_sample.cfg文件,并重命名为zoo.cfg

修改zoo.cfg配置文件,如图所示:

1.1.3 Zookeeper服务端启动
进入bin目录下,双击zkServer.cmd

1.1.4 Zookeeper客户端启动
双击zkCli.cmd

1.1.5 Dubbo下载
下载地址:
https://github.com/apache/dubbo-admin/tree/master
下载zip文件,解压到指定目录
1.1.6 启动dubbo服务器
可以使用maven将dubbo-admin-server项目达成jar包的方式运行
也可以导入Idea运行,这里介绍在Idea里运行
导入Idea后,等待下载maven依赖就好了

dubbo-admin-server是一个Springboot项目,所以可以直接运行DubboAdminApplication类就可以启动成功

可以在application.properties修改端口号等信息

1.1.7 启动dubbo web前端
Dubbo是一个前后端分离的项目,所以前端要单独启动。
启动dubbo-admin-ui需要下载安装Node

修改vue.config.js,target端口号要只想dubbo-admin-server设置的端口号

打开cmd命令窗口,进入到dubbo-admin-ui目录
执行npm run dev命令启动项目

如果遇到如下错误
'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 问题解决方法
需要先下载相关依赖
执行npm install命令,下载完依赖后,再执行npm run dev启动项目
输入cmd打印出来的连接,就可以访问dubbo的前端了,初始账号密码都为root

1.1.8 创建服务提供者和消费者项目,注册到zookeeper
创建maven父子项目
首先创建maven父项目dubbo_maven

pom.xml导入maven依赖:
<?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>
<!-- 此处是springboot的父工程,用于指定springboot 版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bx.dubbo</groupId>
<artifactId>dubbo_parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!-- 此处无需手动添加,创建模块时会自动加入,如果创建完所有模块,此处没有自动加入,需要手动加入子模块名称-->
<modules>
<module>dubbo_api</module>
<module>dubbo_provider</module>
<module>dubbo_consumer</module>
</modules>
<!-- 统一版本管理 -->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>1.8</java.version>
<zk.version>3.6.2</zk.version>
<dubbo.version>2.7.7</dubbo.version>
<curator.framework.version>5.1.0</curator.framework.version>
<curator.recipes.version>5.1.0</curator.recipes.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zk.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator.framework.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.recipes.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
新建接口子模块dubbo_api

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">
<parent>
<artifactId>dubbo_parent</artifactId>
<groupId>com.bx.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>dubbo-api</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
新建一个UserService的接口类

新建服务提供者子模块dubbo_provider
创建UserServiceImpl类实现UserService接口

创建启动类ProviderApplication

application.properties配置文件:

新建消费者子模块dubbo_consumer
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">
<parent>
<artifactId>dubbo_parent</artifactId>
<groupId>com.bx.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>dubbo_consumer</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.bx.dubbo</groupId>
<artifactId>dubbo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
创建UserController类

创建启动类ConsumerApplication

application.properties文件内容

启动ProviderApplication、ConsumerApplication后,在dubbo_dmin_ui就可以看到这两个服务了

Idea一个窗口导入多个项目,可以通过maven导入pom.xml的方式


浙公网安备 33010602011771号