Windows下Dubbo+Zookeeper实现分布式部署教程

 更新时间:2025年10月22日 08:43:05   作者:有女孩说要娶我  
本文介绍了如何使用Dubbo和Zookeeper搭建分布式服务,包括环境准备、项目结构、依赖引入、接口与服务实现、注解配置及服务调用流程,适合初学者参考和实践

前言

使用Dubbo+Zookeeper实现分布式服务部署,环境提前准备好,并不局限于当前版本,只是更高版本的依赖注解等有些区别,整体实现思路不变。

提示:以下是本篇文章正文内容,下面案例可供参考

一、环境准备

本地环境如下:

  1. 1. JDK1.8
  2. 2. Maven3.6.3
  3. 3. IDE:IDEA2024
  4. 4. Tomcat8.5.99
  5. 5. Zookeeper3.6.4
  6. 6. Dubbo2.5.10

二、使用步骤

1. 创建项目

项目结构如下:

dubbo-common:父项目

  • dubbo-consumer:服务消费端
  • dubbo-interface:接口
  • dubbo-provider:服务提供端

2. 引入依赖

服务消费端和服务提供端需要引入接口模块:

        <dependency>
            <groupId>com.xxxxxx</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

以及zookeeper和dubbo相关依赖:

        <!-- Dubbo 依赖 -->
        <dependency>
            <groupId> com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.10</version>
            <type>jar</type>
        </dependency>
        <!-- Zookeeper 客户端依赖 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>5.2.0</version>
        </dependency>
        <!-- 添加 zkclient 依赖 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <!-- 显式指定ZooKeeper版本 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.4</version>
        </dependency>
        <!-- Spring Context 依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.8</version>
        </dependency>

3. 在接口模块定义接口

public interface UserService {
    /**
     * 获取用户名
     * @param userName
     * @return
     */
    String getUserName(String userName);
}

4. 在服务提供模块定义服务实现

(注意实现的为接口模块的Service)

@Service
public class UserServiceImpl implements UserService {
    /**
     * 获取用户名
     * @param userName
     * @return
     */
    @Override
    public String getUserName(String userName) {
        return "hello" + userName;
    }
}

其中@Service注解为

import com.alibaba.dubbo.config.annotation.Service;

同时增加dubbo的配置

# Dubbo 配置
dubbo.application.name=dubbo-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

启动类加注解

@EnableDubbo

5. 在服务消费模块进行服务调用

(注意注入的为接口模块的Service)

@RestController
public class UserController {

    @Reference
    private UserService userService;

    @GetMapping("/getUserName")
    public String getUserName(@RequestParam String userName) {
        System.out.println("用户名:" + userName);
        return userService.getUserName(userName);
    }
}

其中@Reference注解为

import com.alibaba.dubbo.config.annotation.Reference;

同样添加配置信息和注解,配置的name改为dubbo-consumer

6. 启动provider&consumer

Dubbo查看服务

7. 调用

http://localhost:8086/getUserName?userName="张三"

总结

以上就是今天要讲的内容,本文简单介绍了如何使用Dubbo+Zookeeper实现简单的服务调用,后续可以将服务部署在不同的服务器上,实现真正的分布式部署。

第一次实现想了想还是记录一下,给同样小白的朋友参考。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java创建多线程服务器流程

    Java创建多线程服务器流程

    这篇文章主要介绍了Java创建多线程服务器流程,以下实例演示了如何使用Socket类的accept()方法和ServerSocket类的MultiThreadServer(socketname)方法来实现多线程服务器程序
    2023-05-05
  • Java那点儿事之Map集合不为人知的秘密有哪些

    Java那点儿事之Map集合不为人知的秘密有哪些

    Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的key,另一组保存着Map的value,和查字典类似,通过key找到对应的value,通过页数找到对应的信息。用学生类来说,key相当于学号,value对应name,age,sex等信息。用这种对应关系方便查找
    2021-10-10
  • Java中的ForkJoinPool使用方法详解(附案例)

    Java中的ForkJoinPool使用方法详解(附案例)

    ForkJoinPool是Java并发包中的一个重要组件,它是一种特殊类型的线程池,用于支持分而治之的任务并行执行,这篇文章主要介绍了Java中ForkJoinPool使用方法的相关资料,需要的朋友可以参考下
    2025-09-09
  • 浅谈Java中的n种随机数产生办法

    浅谈Java中的n种随机数产生办法

    众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数。看似简单,但有时我们也会忽略了一些有趣的功能。
    2015-09-09
  • 2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)

    2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)

    这篇文章主要介绍了2020最新IDEA SpringBoot整合Dubbo(zookeeper版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring Boot中处理Servlet路径映射问题解决

    Spring Boot中处理Servlet路径映射问题解决

    本文探讨了将传统Servlet框架集成到Spring Boot应用时出现的路径映射问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-08-08
  • IDEA类存在但找不到的解决办法

    IDEA类存在但找不到的解决办法

    本文主要介绍了IDEA类存在但找不到的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Spring Security十分钟入门教程

    Spring Security十分钟入门教程

    这篇文章主要介绍了Spring Security入门教程,Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架
    2022-09-09
  • Netty中最简单的粘包解析方法分享

    Netty中最简单的粘包解析方法分享

    黏包 是指网络上有多条数据发送给服务端, 但是由于某种原因这些数据在被接受的时候进行了重新组合,本文分享了一种最简单的黏包解析方法, 非常适用于初初初级选手
    2023-05-05
  • java 折半查找法(二分查找)实例

    java 折半查找法(二分查找)实例

    java 折半查找法(二分查找)实例,需要的朋友可以参考一下
    2013-03-03

最新评论