当前位置: 首页 > news >正文

Java+SpringBoot+Dubbo+Nacos快速入门

目录

一、Dubbo基本介绍。

二、Dubbo快速入门。

(1)环境准备与了解。

(2)项目与模块搭建。

1、父 POM 工程。(dubbo-parent)

2、API 模块-接口、实体类。(dubbo-client-simple)

3、服务提供方模块。(dubbo-server-simple)

4、Web 消费方模块。(dubbo-site-simple)

三、测试。

(1)debug启动服务,查看运行情况。

(2)访问nacos本地控制台地址。

(3)测试controller。(验证服务的远程调用/消费)


一、Dubbo基本介绍。

  • Dubbo是最初阿里为解决自身微服务架构问题而设计和开发的。它是基于Java 语言的高性能、轻量级的 RPC 框架。      
  • 主要提供:远程服务调用、服务治理、服务监控、服务容错、服务负载均衡等。
  • 官方网址:https://cn.dubbo.apache.org/zh-cn/。

  • Dubbo架构基本思想。
  • Dubbo生产者(服务提供者)启动并暴露服务registration。
  • Dubbo消费者从服务注册与发现中心订阅subscribe。

二、Dubbo快速入门。

(1)环境准备与了解。
  • nacos-server-2.4.1。(dubbo3.3.0兼容nacos2.x)
  • nacos-client。(dubbo-nacos-spring-boot-starter中已引入)
  • 对于Spring Boot 应用。(dubbo官方推荐)
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>3.3.0</version><type>pom</type><scope>import</scope>
</dependency>
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.3.0</version>
</dependency>
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-nacos-spring-boot-starter</artifactId><version>3.3.0</version>
</dependency>
  • 我这里采用统一使用父工程管理依赖的版本
  • 1、<artifactId>spring-boot-dependencies</artifactId>:是 springboot官方定义的规范artifact,预定义了 Spring Boot 相关组件(各种核心依赖)的版本号,以及这些依赖之间的兼容关系。
  • 2、<artifactId>dubbo-bom</artifactId>:是 Apache Dubbo 官方提供的 “依赖管理聚合 POM”,作用与spring-boot-dependencies类似,核心是 “统一管理 Dubbo 生态中所有组件的版本”。

  • 配合使用<scope>import</scope>。仅在<dependencyManagement>中有效。用于 “导入外部 POM 的依赖管理规则”。(不会实际引入依赖,只管理版本
  • 配合使用<type>pom</type>它是 Maven 中标识 “配置型依赖” 的关键声明,主要用于依赖版本管理、配置继承和多模块聚合。(jar:默认类型,表示依赖是一个 Java 归档文件,war:表示依赖是一个 Web 应用归档文件)

(2)项目与模块搭建。
  • 整体项目结构图。

1、父 POM 工程。(dubbo-parent)
  • 具体参考学习官网(创建基于Spring Boot的微服务应用):https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/quick-start/starter/
  • pom文件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.hyl</groupId><artifactId>dubbo-parent</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging> <!--特别注意--><modules><module>CLIENT/dubbo-client-simple</module><module>SERVER/dubbo-server-simple</module><module>SITE/dubbo-site-simple</module></modules><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><dubbo.version>3.3.0</dubbo.version><spring-boot.version>3.5.6</spring-boot.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>
  • 一共分子目录CLIENTSERVERSITE。分别对应子模块dubbo-client-simpledubbo-server-simpledubbo-site-simple
2、API 模块-接口、实体类。(dubbo-client-simple)
  • pom文件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.hyl</groupId><artifactId>dubbo-parent</artifactId><version>1.0-SNAPSHOT</version><relativePath>../../pom.xml</relativePath></parent><artifactId>dubbo-client-simple</artifactId><packaging>jar</packaging> <!--显式打包jar供其他服务依赖--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency>--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId></dependency></dependencies></project>
  • 提供一个测试接口DemoService。
package com.hyl.client.simple;import com.hyl.client.simple.bean.User;public interface DemoService {String sayHello(String name);User getUser(Long uid);
}
  • 提供一个实体类User。
package com.hyl.client.simple.bean;import java.io.Serial;
import java.io.Serializable;public class User implements Serializable {//编译时检查字段否符合序列化规范@Serialprivate static final long serialVersionUID = 1L;private Long uid;private String name;public Long getUid() {return uid;}public void setUid(Long uid) {this.uid = uid;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"uid=" + uid +", name='" + name + '\'' +'}';}
}

3、服务提供方模块。(dubbo-server-simple)
  • pom文件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.hyl</groupId><artifactId>dubbo-parent</artifactId><version>1.0-SNAPSHOT</version><relativePath>../../pom.xml</relativePath></parent><artifactId>dubbo-server-simple</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.hyl</groupId><artifactId>dubbo-client-simple</artifactId><version>${project.parent.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-nacos-spring-boot-starter</artifactId></dependency><!--<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></dependency>--></dependencies></project>
  • 提供一个测试接口实现类DemoServiceImpl。
package com.hyl.server.simple.service;import com.hyl.client.simple.DemoService;
import com.hyl.client.simple.bean.User;
import org.apache.dubbo.config.annotation.DubboService;//暴露服务
@DubboService
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHello(String name) {return "Hello "+ name;}@Overridepublic User getUser(Long uid) {User newUser = new User();newUser.setUid(uid);newUser.setName("用户"+uid);return newUser;}
}
  • 启动类DubboServerApplication。(开启Dubbo扫描)
package com.hyl.server.simple;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@EnableDubbo  //启用Dubbo注解扫描
public class DubboServerApplication {public static void main(String[] args) {SpringApplication.run(DubboServerApplication.class, args);}
}
  • 提供application.yml配置文件。(spring、dubbo服务方基础配置
spring:application:name: dubbo-server-simpledubbo:application:name: dubbo-server-simplelogger: slf4jqos-port: 22226registry:address: nacos://127.0.0.1:8848protocol:name: triport: 50051  #服务提供者heartbeat: 15000  #心跳检测间隔provider:timeout: 15000  #服务提供方超时时间retries: 0  #重试次数

4、Web 消费方模块。(dubbo-site-simple)
  • pom文件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.hyl</groupId><artifactId>dubbo-parent</artifactId><version>1.0-SNAPSHOT</version><relativePath>../../pom.xml</relativePath></parent><artifactId>dubbo-site-simple</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.hyl</groupId><artifactId>dubbo-client-simple</artifactId><version>${project.parent.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-nacos-spring-boot-starter</artifactId></dependency></dependencies></project>
  • 提供一个测试controller类DemoSiteController。
package com.hyl.site.simple.controller;import com.hyl.client.simple.DemoService;
import com.hyl.client.simple.bean.User;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api")
public class DemoSiteController {@DubboReference(check = false)  //启动时不检查服务是否可用private DemoService demoService;//Spring 6.x 不再推测参数名,必须显式指定 value 或启用 -parameters//必须使用value显示的指定参数名称@RequestMapping("/hello")public String hello(@RequestParam(value = "name") String name) {return demoService.sayHello(name);}@RequestMapping("/user/{uid}")public User getUser(@PathVariable(value = "uid") Long uid) {return demoService.getUser(uid);}
}
  • 启动类DubboSiteApplication。(开启Dubbo扫描)
package com.hyl.site.simple;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@EnableDubbo  // 开启dubbo功能
public class DubboSiteApplication {public static void main(String[] args) {SpringApplication.run(DubboSiteApplication.class, args);}
}
  • 提供application.yml配置文件。(spring、dubbo消费方基础配置
server:port: 8001spring:application:name: dubbo-site-simpledubbo:application:name: dubbo-site-simplelogger: slf4jqos-port: 22227registry:address: nacos://127.0.0.1:8848consumer:  #消费方专属timeout: 15000check: false

三、测试。
(1)debug启动服务,查看运行情况。


(2)访问nacos本地控制台地址。
  • 注:想看到消费者服务列表加:registry parameters.register-consumer-url: true 。



(3)测试controller。(验证服务的远程调用/消费)
  • 访问:http://localhost:8001/api/hello?name=今天星期六


  • 访问:http://localhost:8001/api/user/888。

http://www.dtcms.com/a/469873.html

相关文章:

  • 【开题答辩全过程】以 办公管理系统为例,包含答辩的问题和答案
  • 天创网站做网站 数据标准
  • 做除尘骨架的网站网页一般用什么语言编写
  • SciPy 常量模块
  • 记录一次在Win7系统中使用C#中的HttpWebRequest连接缓慢、超时等问题(httpclient和restsharp也存在同样的问题)
  • Spring Boot 3零基础教程,Spring Intializer,笔记05
  • spring boot 2.x 与 spring boot 3.x 及对应Tomcat、Jetty、Undertow版本的选择(理论)
  • 织梦 网站栏目管理 很慢国内免费域名申请
  • 建设企业网站的好处是什么门户网站建设的成果
  • 【BUG排查】基于RH850F1KMS1的主控出现系统中断错误,调试FEIC的值为0x11
  • C++变量命名详解
  • 2.c++面向对象(三)
  • 自动化测试系统Parasoft航空设备行业案例:减少75%的BUG
  • Git Commit Message 最佳实践:从一次指针Bug说起
  • 网站设计专业知识技能传奇 网页游戏排行榜
  • 漳州北京网站建设公司wordpress小工具九宫格
  • 多智能体协作中的数据交互艺术:构建高效协同的智能系统
  • 人工智能大模型的“通俗理解”
  • 网站后台怎么做水印图片石家庄最新大事
  • 项目学习总结:platform方式驱动框架、pc版和arm版连通ONENET方式、wireshark抓包mqtt、ONENET创建产品、双网卡配置
  • Transformers包常用函数讲解
  • 在昇腾910B服务上部署搭建适配PDF解析工具Mineru2.5开源项目
  • Vue项目中将界面转换为PDF并导出的实现方案
  • 黄山市非遗网站策划书推广普通话作文
  • 深度学习基础:从原理到实践——第二章神经网络(中)
  • 从传统Linux部署到容器化:实践对比与工程化指南
  • Python 高效实现 Excel 与 CSV 互转:用自动化提升效率
  • php购物网站开发uml图注册页面设计代码
  • Let‘s Encrypt证书加密原理 免费申请方式
  • 农村电商网站建设分类高校门户网站开发