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的方式

 

posted @ 2022-08-25 18:24  Boxin-kim  阅读(467)  评论(0)    收藏  举报
Web Analytics
Guang Zhou Boxin