1.什么是DubboDubbo 是一款高性能、轻量级的 Java 分布式服务框架RPC 框架专门用来做 “微服务之间的远程调用”。简单说A 服务 想调用 B 服务 的方法像调用本地方法一样方便底层就是 Dubbo 帮你做通信。Registry注册中心注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者。Consumer服务消费者调用远程服务的服务消费方服务消费者在启动时向注册中心订阅自己所需的服务服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用。Monitor监控中心服务消费者和提供者在内存中累计调用次数和调用时间定时每分钟发送一次统计数据到监控中心。Provider服务提供者暴露服务的服务提供方服务提供者在启动时向注册中心注册自己提供的服务。核心作用:1远程服务调用RPC让服务之间像调用本地方法一样调用远程接口屏蔽网络细节。2服务注册与发现服务启动时把自己注册到注册中心如 Nacos、ZooKeeper调用方自动发现可用服务。3负载均衡、容错、限流自动把请求分给多台服务器某台挂了自动切换保证系统高可用。说明本文只简单搭建和使用Dubbo后续文章会整合成分布式架构。本文用的工具IDEA版本2026.1JDK版本17Spring Boot版本3.xDubbo版本3.3.0本文先创建父模块然后分别创建生产者和消费者本文项目结构如下D:\Project\test\dubbo_demo │ ├── pom.xml# 父工程 Maven 配置│ ├── dubbo-api/# 接口模块│ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ ── com.guo.service/ │ │ │ └── DogService.java │ │ └── resources/ │ └── test/java/ │ ├── dubbo-provider/# 服务提供者模块│ ├── pom.xml │ ── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com.guo/ │ │ │ ├── ProviderApplication.java │ │ │ └── service/ │ │ │ └── DogServiceImpl.java │ │ └── resources/ │ │ └── application.yml │ └── test/java/ │ └── dubbo-consumer/# 服务消费者模块├── pom.xml └── src/ ├── main/ │ ├── java/ │ │ └── com.guo/ │ │ ├── ConsumerApplication.java │ │ └── controller/ │ │ └── DogController.java │ └── resources/ │ └── application.yml └── test/java/2.搭建父模块2.1 创建父模块项目父模块本身没有其他代码主要用来管理子模块实际上就是一个空Maven项目。这里选择“Java”构建系统选择“Maven”JDK这里选17然后点击下面的创建。创建完毕后默认界面如下父工程没有其他的代码只有一些依赖所以这里直接把src文件删除右击src文件夹然后选择“删除”然后需要修改packaging打开pom.xml把下面的内容放到pom.xml中。这行的意思是表示父工程负责管理不负责代码packagingpom/packaging2.2 添加公共依赖因为后面会创建子模块子模块需要依赖如果子模块很多需要填写的依赖就很多。此时我们可以在父模块引入依赖子模块沿用父模块的依赖即可。打开父工程的pom.xml然后添加spring boot、dubbo的一些依赖。另外 也增加了上面关于版本的定义比如spring-boot.version3.5.14/spring-boot.version然后有三种方式来下载依赖第一种点击下图的1位置。第二种先点击下图的A,再点击B。第三种双击下图绿的的框。下面的pom.xml中内容的参考(请参考下图的依赖)。?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.guo/groupIdartifactIddubbo-demo2/artifactIdversion1.0-SNAPSHOT/versionpackagingpom/packagingpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncodingspring-boot.version3.5.14/spring-boot.versiondubbo.version3.3.0/dubbo.versionjdk.version17/jdk.version/properties!-- 依赖管理子模块可直接继承无需重复引入 --dependencyManagementdependencies!-- Spring Boot 核心依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion${spring-boot.version}/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversion${spring-boot.version}/versionscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion${spring-boot.version}/version/dependency!-- Dubbo 核心依赖 --dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion${dubbo.version}/version/dependency/dependencies/dependencyManagement!-- 插件管理子模块继承 --buildpluginManagementpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/version/plugin/plugins/pluginManagement/build/project下载依赖后的参考界面如下父模块无需编写 Java 代码仅负责 依赖版本管理 和 子模块关联后续子模块直接继承父模块的依赖配置避免版本冲突。3.搭建api部分3.1 创建api模块api模块只对外提供接口所有调用关系都有api模块来完成。新建模块这里选择“Java”名称填写“dubbo-api”构建方式选MavenJDK这里选17的版本然后点击“创建”创建完了后项目如下可以看到父级的pom文件中自动增加了我们刚才创建的module3.2 创建一个接口我们创建一个Service接口。创建之前先创建包。右击 dubbo-api模块的java文件夹。选择“新建”—“软件包”。包名可以参考下面这样可以写成这样的的目录。com.guo.service注意我们这里只是简单的提供了一个service层 实际开发中可能还有其他的软件包比如com.guo.entity等这里不做演示。创建完后项目结构如下:然后右击刚才创建的文件夹service选择新建—“Java类”这里创建的接口的名字假如是 DogService注意这里选的是“接口”(interface ),不是类。然后按回车确认。在里面增加一行代码String sayHello(String name);完整代码参考如下packagecom.guo.service;publicinterfaceDogService{//一个接口StringsayHello(Stringname);}3.搭建 生成者服务提供者模块这里的生产者主要的功能是提供服务数据等往前要去实现前面的接口往后要做一些查询操作。本文只演示实现接口部分。3.1 创建模块右击父工程选择“新建”—“模块”填写相关的内容然后点击创建。创建完后项目结构如下3.2 添加依赖这个模块需要增加一些依赖打开dubbo-provider模块的pom.xml文件增加下面的依赖整体代码参考如下?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.guo/groupIdartifactIddubbo_demo/artifactIdversion1.0-SNAPSHOT/version/parentartifactIddubbo-provider/artifactIddependencies!--dubbo 与 spring-boot 整合包--dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactId/dependency!--springboot 启动核心包--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3.3 添加实现类这里主要实现api模块的DogService接口。先创建项目包。右击dubbo-provider中的java文件夹选择“新建”—“软件包”。软件包的包名参考为 com.guo.service然后按回车确定。右击刚才创建的service文件夹选择“新建”—“Java类”实现类的名字是 DogServiceImpl然后我们让这个实现类去实现api模块的接口。参考代码如下packagecom.guo.service;importorg.apache.dubbo.config.annotation.DubboService;importorg.springframework.stereotype.Component;DubboServiceComponentpublicclassDogServiceImplimplementsDogService{OverridepublicStringsayHello(Stringname){returnHello, name (from direct provider);}}注意当你去实现DogService这个接口时候报错是正常的解决这个报错很简单把鼠标放上去会看到一个“更多操作”然后点击“更多操作在弹出的菜单里面点击“添加对模块xxxx的依赖”此时你会发现当前这个模块的pom.xml文件中多了一个依赖就是我们前面创建的dubbo-api模块。3.4 创建启动类右击dubbo-provider中的 “guo”这个文件夹注意启动类的位置类名为ProviderApplication然后按回车启动类的参考代码如下:packagecom.guo;importorg.apache.dubbo.config.spring.context.annotation.EnableDubbo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;EnableDubboSpringBootApplicationpublicclassProviderApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ProviderApplication.class,args);System.out.println(Dubbo Provider started.);}}添加完代码后项目参考如下3.5 添加配置文件右击dubbo-provider中的resources文件夹选择“新建 ,然后点击“文件”这个配置文件的名字叫application.yml里面参考的配置内容如下server:port:8081dubbo:application:name:dubbo-providerprotocol:name:dubboport:20880# dubbo 服务端口消费者直连时需要qos:enable:false添加后项目内容如下4.搭建 消费者模块消费者模块和生产者模块非常类似。4.1 创建模块右击项目名点击“新建”—“模块”。然后参考输入下面的内容创建完毕以后项目结构如下4.2 添加依赖打开dubbo-provider模块的依赖文件参考增加下面的内容参考代码?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.guo/groupIdartifactIddubbo_demo/artifactIdversion1.0-SNAPSHOT/version/parentartifactIddubbo-consumer/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project4.3 添加Contorller先新建软件包右击java选择“新建”——“软件包”参考输入下面的内容com.guo.controller然后继续右击Controller点击“新建”然后点击“Java 类”Controller的名字假定为DogController代码参考如下packagecom.guo.controller;importcom.guo.service.DogService;importorg.apache.dubbo.config.annotation.DubboReference;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;RestControllerpublicclassDogController{// 直连模式直接指定 Provider 的地址和 Dubbo 端口DubboReference(urldubbo://127.0.0.1:20880)privateDogServicedogService;GetMapping(/hello)publicStringsayHello(RequestParam(name)Stringname){returndogService.sayHello(name);}}4.4 创建启动类右击“guo”这个文件夹选择“新建”—“Java类”类名为ConsumerApplication代码参考packagecom.guo;importorg.apache.dubbo.config.spring.context.annotation.EnableDubbo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;EnableDubboSpringBootApplicationpublicclassConsumerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ConsumerApplication.class,args);}}4.5 添加配置文件右击“resources”文件选择 “新建”—“文件”文件的名字为application.yml内容参考如下server:port:8082dubbo:application:name:dubbo-demo-consumer# 不需要任何注册中心配置qos:enable:false5.启动测试先启动生产者Provider模块再启动消费者模块Consumer可以看到正常启动然后打开浏览器在浏览器中输入下面的地址http://localhost:8082/hello?name张三看到下面内容表示成功本文参考代码如下1百度网盘通过网盘分享的文件dubbo_demo.zip链接: https://pan.baidu.com/s/1xIVD2-sONUQE6e2JwLqFYg?pwdx1nd 提取码: x1nd2夸克网盘我用夸克网盘给你分享了「dubbo_demo.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/11503b5dq7链接https://pan.quark.cn/s/532fe6dc810c?pwdxFED提取码xFED
