SpringBoot+Dubbo+Zookeeper实现分布式系统
一、分布式系统通俗解释
场景比喻:想象一个大型超市(分布式系统):
- 收银台(服务消费者):处理顾客请求
- 仓库(服务提供者):提供商品
- 总控室(Zookeeper):记录哪个仓库有什么商品
- 物流系统(Dubbo):负责收银台和仓库之间的通信
当顾客要买可乐时:
- 收银台询问总控室:哪里能拿到可乐?
- 总控室返回仓库A的地址
- 收银台通过物流系统向仓库A请求可乐
- 仓库A将可乐送到收银台
二、环境准备(详细版)
1. 软件版本
- JDK 8
- Maven 3.6.3
- Zookeeper 3.7.0 (下载地址)
2. 安装Zookeeper(单机模式)
# 解压后进入conf目录
cp zoo_sample.cfg zoo.cfg
# 修改配置(关键部分)
dataDir=/tmp/zookeeper
clientPort=2181
# 启动服务(Linux/Mac)
bin/zkServer.sh start
# Windows双击zkServer.cmd
三、完整项目结构(带详细注释)
distributed-demo
├── api # 服务接口定义
├── provider # 服务提供者
└── consumer # 服务消费者
四、手把手代码实现
步骤1:创建父工程(管理依赖)
<!-- pom.xml -->
<project>
<groupId>com.example</groupId>
<artifactId>distributed-demo</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>api</module>
<module>provider</module>
<module>consumer</module>
</modules>
<properties>
<dubbo.version>2.7.15</dubbo.version>
<zk.version>3.7.0</zk.version>
</properties>
<dependencies>
<!-- Dubbo核心 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<!-- Zookeeper客户端 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
</project>
步骤2:API模块(定义服务契约)
// api/src/main/java/com/example/api/CalculatorService.java
public interface CalculatorService {
/**
* 加法服务
* @param a 加数
* @param b 被加数
* @return 和
*/

最低0.47元/天 解锁文章
960

被折叠的 条评论
为什么被折叠?



