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
企业数字化 ERP 产品动态
相关推荐
计算机网络安全实战:从攻击面收敛到安全运营的核心方法 聊到计算机网络安全,我脑海里第一反应不是某款防火墙产品,也不是某次攻防演练的得分,而是“攻防双方其实都在用想象力博弈”这件事。这些年我带过团队做安全运维,也当过应急响应的值班员,越来越觉得:真正决… · 2026/9/26 15:58:23
基于虚拟电厂的分布式光伏、储能、充电桩等业务场景的计量配置方案【附全文阅读】 本 PPT 面向电网规划、计量技术、虚拟电厂项目从业者,以及新能源建设与电力咨询人员。围绕虚拟电厂聚合分布式光伏、储能、充电桩场景,解读相关政策,梳理各类新能源技术原理、业务模式与典型应用场景。文档重点讲解分布式电源接入单元硬件方案… · 2026/9/26 15:58:17
政企网络2.5G双光口网卡:安全与业务流量物理隔离实战指南 1. 政企网络里“看不见的堵点”:为什么2.5G双光口不是升级,而是重构你有没有遇到过这样的场景:某市政务云平台刚上线一套新审批系统,用户反馈“提交卡顿、附件上传超时”,运维日志里却找不到明显错误;或者某… · 2026/9/26 15:58:17
MES系统如何管住现场?选型、实施与降本实战指南 1. 项目概述:为什么大家都在问MES能不能管住现场干制造业的朋友,尤其是干生产管理和车间信息化的,这几年肯定没少被问一个问题:上MES系统到底有没有用?能不能真的把现场管住,把成本降下来?说实话… · 2026/9/26 16:24:43
光遇九色鹿复刻时间介绍 光遇九色鹿复刻时间是什么时候 光遇九色鹿复刻时间是近期玩家最关心的信息,不少人早早开始积攒蜡烛,等待先祖返场,规划想要兑换的季节装扮。光遇九色鹿复刻时间正式定为9月24日到10月14日,活动和秋宵节同步上线,为期三周。整套先祖道具需要大量白蜡烛… · 2026/9/26 16:24:43
基于企业交易数据的OKVED行业分类实战解析 OKVED detection 关注的不是通用文本分类,而是依据企业交易记录识别所属行业类别。这类任务在金融科技和企业服务场景中很常见,核心难点在于如何把零散流水、摘要文本和交易模式转换成稳定可学习的行业信号。
这道题虽然在平台分类中出现了偏差,但从题面与评测方式看,本质… · 2026/9/26 16:24:43
ITK 配 TaoToken:C++ 图像配准工程化配置与验证 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 16:24:43
鱼香ROS:面向初学者的ROS环境一键部署方案 1. 项目概述:为什么“鱼香ROS”不是菜谱,而是初学者绕不开的第一道门槛 “鱼香ROS”这个词刚出来的时候,我身边好几个刚转行做机器人开发的朋友都愣住了——第一反应是“这玩意儿跟鱼香肉丝有关系?”后来发现,它既不是… · 2026/9/26 16:24:43
KernelSU元模块开发实战:架构设计、挂载策略与性能优化 1. 元模块到底解决了什么问题1.1 从模块系统的痛点说起KernelSU 的模块机制本质上是一套“开机时把文件挂载到系统分区”的方案。传统模块的做法很直接:模块包里放一个module.prop描述信息,再放一堆脚本和文件,开机时由内核态的模块加载器把内… · 2026/9/26 16:24:37
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46