SpringBoot+Dubbo+zookeeper 急速入门案例

项目目录结构:

第一步:创建一个SpringBoot项目,这里选择Maven项目或者Spring Initializer都可以,这里创建了一个Maven项目(SpringBoot-Dubbo),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">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.ly</groupId>
    <artifactId>SpringBoot-Dubbo</artifactId>
    <packaging>pom</packaging>
    <version>0.0.1-SNAPSHOT</version>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.3.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

</project>

更多Java学习指南以及最新项目场景题,需要的宝子
Java学习包传送门

第二步:添加Module,以dubbo-provider为例

可以使用Maven创建或者使用Spring Initializr:

第三步:服务提供方dubbo-provider相关配置

在pom.xml文件中添加dubbo使用依赖,以及zookeeper的依赖:

复制代码
<?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>SpringBoot-Dubbo</artifactId>
        <groupId>com.ly</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.qunhongtech</groupId>
    <artifactId>dubbo-provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>dubbo-customer</name>
    <modelVersion>4.0.0</modelVersion>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.3.0.RELEASE</version>
        </dependency>
        
        <!--dubbo依赖-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <!--zookeeper客户端依赖-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>
</project>

修改配置文件:application.yml

复制代码
server:
  port: 8081             #Tomcat端口号
dubbo:
  application:
    name: dubbo-provider #应用名称
  protocol:
    name: dubbo
    port: 20880          #dubbo服务暴漏的端口号
  registry:
    address: zookeeper://127.0.0.1:2181  #zookeeper服务的地址以及端口号

第四步:服务消费方dubbo-customer相关配置

在pom.xml文件中添加dubbo使用依赖,以及zookeeper的依赖:

复制代码
<?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>SpringBoot-Dubbo</artifactId>
        <groupId>com.ly</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.ly</groupId>
    <artifactId>dubbo-customer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>dubbo-customer</name>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>
</project>

修改配置文件:application.yml

复制代码
server:
	port: 8082             #Tomcat端口号
dubbo:
  application:
    name: dubbo-customer   #应用名称
  registry:
    address: zookeeper://127.0.0.1:2181  #zookeeper服务的地址以及端口号

第五步:在dubbo-api中新建接口,并在dubbo-provider中实现

在dubbo-api中创建一个接口:HelloService,使用时需要在dubbo-provider以及dubbo-customer

中添加依赖:

复制代码
public interface HelloService {

    String hello();

}

在dubbo-provider中实现HelloService接口:

创建接口实现类HelloServiceImpl用来实现HelloService接口:实现代码如下,注意这里使用的注解@Service不是用spring的service注解,而是使用的dubbo的注解:import com.alibaba.dubbo.config.annotation.Service;

复制代码
@Service //发布服务
public class HelloServiceImpl implements HelloService {

    @Override
    public String hello() {
        return "Hello World...";
    }
}

并在启动器DubboProviderApplication中添加注解:@EnableDubbo

第六步:试着在dubbo-customer中远程调用HelloService接口:

新建一个HelloController类,代码如下,想要引入远程服务时需要使用dubbo的Reference注解:

复制代码
@RestController
public class HelloController {

    @Reference //引用服务
    private HelloService helloService;

    @GetMapping("/hello")
    private String hello(){

        System.out.println("Hello World...");

        return helloService.hello();
    }

}

测试代码,先启动服务提供方:dubbo-provider,发生错误,因为我们还没有启动zookeeper

下载安装zookeeper,打开连接选择合适的版本直接安装即可: https://zookeeper.apache.org/releases.html


下载下来的压缩包可以在linux或windows中使用,这里以windows为例:

解压压缩包,找到bin目录并打开:

目录如下,找到zkServer.cmd,双击启动即可:

运行结果如下:

再次依次启动:服务提供发:dubbo-provider服务消费方:dubbo-customer,打开浏览器进行测试,结果如下:

更多Java学习指南以及最新项目场景题,需要的宝子
Java学习包传送门

相关推荐
野犬寒鸦9 分钟前
从零起步学习MySQL || 第十六章:MySQL 分库分表的考量策略
java·服务器·数据库·后端·mysql
知识分享小能手12 分钟前
Oracle 19c入门学习教程,从入门到精通, —— 知识点详解(1)
数据库·学习·oracle
lsx20240614 分钟前
Eclipse 添加书签
开发语言
木风小助理20 分钟前
JavaAtomicInteger底层实现深度解析
java
易营宝22 分钟前
高效的跨境电商广告优化系统:易营宝广告投放实操指南
大数据·开发语言·人工智能·php
superman超哥25 分钟前
路由的艺术:Rust Web 框架中的高效匹配与类型安全提取
开发语言·rust·编程语言·rust web框架·rust路由
BD_Marathon26 分钟前
搭建MyBatis框架之创建MyBatis的映射文件(五)
java·数据库·mybatis
一只叫煤球的猫26 分钟前
为什么Java里面,Service 层不直接返回 Result 对象?
java·spring boot·面试
洛阳泰山27 分钟前
智能体项目MaxKB4J - 本地部署与开发完整指南
java·agent·工作流·rag·智能体·maxkb
hqwest30 分钟前
码上通QT实战22--趋势页面01-准备图表对象
开发语言·qt·qpainter·qss·painevent·qt绘图事件