简历内容准备

📅 2026/7/13 4:17:33 👁️ 阅读次数 📝 编程学习
简历内容准备

一、安装并启动zookeeper

下载并解压zookeeper,本文以apache-zookeeper-3.8.6-bin为例

1、将conf目录下的zoo_sample.cfg修改为zoo.cfg

2、新建目录D:\Program Files\apache-zookeeper-3.8.6-bin\data

并将zoo.cfg中的dataDir修改为D:\Program Files\apache-zookeeper-3.8.6-bin\data

3、编辑 Zookeeper 的配置文件conf/zoo.cfg,在末尾添加一行(如果不加可能会显示8080端口被占用)

admin.serverPort=8081

4、启动zookeeper

# 路径 apache-zookeeper-3.8.6-bin\bin zkServer.md

二、编程Dubbo程序

1、说明文档

## 项目概述 Apache Dubbo 3 + Spring Boot 3 多模块 Maven 项目,演示基于 Zookeeper 注册中心的 RPC 调用。 ## 技术栈 - Java 17, Spring Boot 3.3.4, Dubbo 3.3.2, Spring Framework 6.1.13 - Zookeeper 注册中心(Curator 5 客户端) ## 模块结构 | 模块 | 职责 | |------|------| | `dubbo-demo-api` | 共享 API 接口定义(`DemoService`),无 Spring/Dubbo 依赖 | | `dubbo-demo-provider` | 服务提供者,`@DubboService` 暴露接口实现 | | `dubbo-demo-consumer` | 服务消费者,`@DubboReference` 引用远程服务 | ## 项目结构明细 dubbo-demo/ ├── pom.xml # 父POM,管理依赖版本和模块 ├── dubbo-demo-api/ # 公共API模块 │ ├── pom.xml │ └── src/main/java/com/atzrb/api/ │ └── DemoService.java # 服务接口 ├── dubbo-demo-provider/ # 服务提供者 │ ├── pom.xml │ ├── src/main/java/com/atzrb/ │ │ ├── DubboProviderApplication.java │ │ └── DemoServiceImpl.java │ └── src/main/resources/ │ └── application.yml └── dubbo-demo-consumer/ # 服务消费者 ├── pom.xml ├── src/main/java/com/atzrb/ │ ├── DubboConsumerApplication.java │ └── DemoConsumerRunner.java └── src/main/resources/ └── application.yml ## 启动与运行 **启动顺序:Zookeeper → Provider → Consumer** ### parent pom.xml 的 Spring 版本覆写 `dubbo-bom` 会引入不兼容的 Spring Framework 版本,父 POM 在 `dependencyManagement` 中显式将 `spring-core`、`spring-context`、`spring-beans`、`spring-aop`、`spring-expression`、`spring-jcl`、`spring-context-support` 锁定到 6.1.13。新增 Spring 依赖时需检查是否需要同样覆写。

2、父POM (pom.xml)

<projectxmlns="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><groupId>com.atzrb</groupId><artifactId>dubbo-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>dubbo-demo-api</module><module>dubbo-demo-provider</module><module>dubbo-demo-consumer</module></modules><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.4</version><relativePath/></parent><properties><java.version>17</java.version><dubbo.version>3.3.2</dubbo.version><spring-framework.version>6.1.13</spring-framework.version></properties><dependencyManagement><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency><!-- Override Spring Framework version polluted by dubbo-bom --><!-- Spring Boot 3.3.4 requires Spring Framework 6.1.x --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring-framework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring-framework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring-framework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>${spring-framework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jcl</artifactId><version>${spring-framework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring-framework.version}</version></dependency></dependencies></dependencyManagement></project>

3、API模块 (dubbo-demo-api)

3.1 pom文件
<projectxmlns="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>com.atzrb</groupId><artifactId>dubbo-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>dubbo-demo-api</artifactId><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>
3.2 DemoService.java
packagecom.atzrb.api;publicinterfaceDemoService{StringsayHello(Stringname);}

4、服务提供者 (dubbo-demo-provider)

4.1pom.xml
<projectxmlns="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>com.atzrb</groupId><artifactId>dubbo-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>dubbo-demo-provider</artifactId><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Dubbo Spring Boot Starter --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><!-- Zookeeper Curator5 Starter(Zookeeper Server 3.5.x 及以上版本使用) --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-zookeeper-curator5-spring-boot-starter</artifactId></dependency><!-- API 模块 --><dependency><groupId>com.atzrb</groupId><artifactId>dubbo-demo-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>
4.2application.yml
dubbo:application:name:dubbo-demo-providerregistry:address:zookeeper://127.0.0.1:2181protocol:name:dubboport:20880scan:base-packages:com.atzrb
4.3DubboProviderApplication.java
@SpringBootApplication@EnableDubbopublicclassDubboProviderApplication{publicstaticvoidmain(String[]args){SpringApplication.run(DubboProviderApplication.class,args);System.out.println("Dubbo Provider started successfully!");}}
4.4DemoServiceImpl.java
@DubboServicepublicclassDemoServiceImplimplementsDemoService{@OverridepublicStringsayHello(Stringname){return"Hello, "+name+"! (from Dubbo Provider)";}}

5、服务消费者 (dubbo-demo-consumer)

5.1pom.xml
<projectxmlns="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>com.atzrb</groupId><artifactId>dubbo-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>dubbo-demo-consumer</artifactId><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Dubbo Spring Boot Starter --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><!-- Zookeeper Curator5 Starter --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-zookeeper-curator5-spring-boot-starter</artifactId></dependency><!-- API 模块 --><dependency><groupId>com.atzrb</groupId><artifactId>dubbo-demo-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>
6.2application.yml
dubbo:application:name:dubbo-demo-consumerregistry:address:zookeeper://127.0.0.1:2181
6.3DubboConsumerApplication.java
@SpringBootApplication@EnableDubbopublicclassDubboConsumerApplication{publicstaticvoidmain(String[]args){ConfigurableApplicationContextcontext=SpringApplication.run(DubboConsumerApplication.class,args);DemoConsumerRunnerrunner=context.getBean(DemoConsumerRunner.class);runner.run();}}
6.4DemoConsumerRunner.java
@ComponentpublicclassDemoConsumerRunner{@DubboReferenceprivateDemoServicedemoService;publicvoidrun(){Stringresult=demoService.sayHello("Dubbo Learner");System.out.println("=== Consumer received: "+result+" ===");}}