Windows下Dubbo+Zookeeper实现分布式部署教程
前言
使用Dubbo+Zookeeper实现分布式服务部署,环境提前准备好,并不局限于当前版本,只是更高版本的依赖注解等有些区别,整体实现思路不变。
提示:以下是本篇文章正文内容,下面案例可供参考
一、环境准备
本地环境如下:
- 1. JDK1.8
- 2. Maven3.6.3
- 3. IDE:IDEA2024
- 4. Tomcat8.5.99
- 5. Zookeeper3.6.4
- 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实现简单的服务调用,后续可以将服务部署在不同的服务器上,实现真正的分布式部署。
第一次实现想了想还是记录一下,给同样小白的朋友参考。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
spring security与corsFilter冲突的解决方案
这篇文章主要介绍了spring security与corsFilter冲突的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
springboot从application.properties中注入list, map方式
这篇文章主要介绍了springboot从application.properties中注入list,map方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
SpringBoot实现Logback输出日志到Kafka方式
本文介绍了如何在SpringBoot应用中通过自定义Appender实现Logback输出日志到Kafka,包括配置maven依赖、Kafka工具类和logback.xml配置2025-02-02
去掉 IDEA 中 mybatis配置文件的局部背景颜色(图解)
这篇文章通过图文并茂的形式给大家介绍了去掉IntelliJ IDEA 中 mybatis配置文件的局部背景颜色及mybatis 对应的 xml 文件警告的方法图解,需要的朋友可以参考下2018-09-09
Spring IOC中对象的创建、策略及销毁时机和生命周期详解
这篇文章主要介绍了Spring IOC中对象的创建、策略及销毁时机和生命周期详解,Spring默认使用类的空参构造方法创建bean,假如类没有空参构造方法,将无法完成bean的创建,需要的朋友可以参考下2023-08-08


最新评论