基于dubbo rpc框架集成nacos注册中心(极简案例)

简介: 基于dubbo rpc框架集成nacos注册中心(极简案例)

1.版本说明:

  • Spring Cloud Greenwich.SR2
  • Spring Cloud Alibaba 2.1.2.RELEASE
  • Spring Boot 2.1.1.RELEASE

2.项目结构介绍

  • demo-dubbo-nacos-api 服务api接口
  • demo-dubbo-nacos-provider 服务提供者
  • demo-dubbo-nacos-consumer 服务消费者

3.项目依赖

3.0 demo-dubbo-nacos 的 pom.xml


<?xmlversion="1.0" encoding="UTF-8"?><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.daobili</groupId><artifactId>demo-dubbo-nacos</artifactId><version>Beikezhan.M1</version><modules><module>demo-dubbo-nacos-provider</module><module>demo-dubbo-nacos-api</module><module>demo-dubbo-nacos-consumer</module></modules><packaging>pom</packaging></project>

3.1 demo-dubbo-nacos-api 的 pom.xml

<?xmlversion="1.0" encoding="UTF-8"?><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"><parent><artifactId>demo-dubbo-nacos</artifactId><groupId>com.daobili</groupId><version>Beikezhan.M1</version></parent><modelVersion>4.0.0</modelVersion><artifactId>demo-dubbo-nacos-api</artifactId></project>

3.2 demo-dubbo-nacos-provider 的 pom.xml

<?xmlversion="1.0" encoding="UTF-8"?><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"><parent><artifactId>demo-dubbo-nacos</artifactId><groupId>com.daobili</groupId><version>Beikezhan.M1</version></parent><modelVersion>4.0.0</modelVersion><artifactId>demo-dubbo-nacos-provider</artifactId><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><spring-cloud.version>Greenwich.SR2</spring-cloud.version></properties><!--版本依赖:SpringCloud Greenwich.SR2SpringCloud Alibaba 2.1.1.RELEASESpringBoot 2.1.1.RELEASE--><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.1.1.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.1.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId><version>2.1.2.RELEASE</version><exclusions><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId><version>2.1.2.RELEASE</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId><version>2.1.1.RELEASE</version><exclusions><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.daobili</groupId><artifactId>demo-dubbo-nacos-api</artifactId><version>Beikezhan.M1</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId><version>2.1.1.RELEASE</version></dependency></dependencies></project>

3.3 demo-dubbo-nacos-consumer 的 pom.xml

<?xmlversion="1.0" encoding="UTF-8"?><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"><parent><artifactId>demo-dubbo-nacos</artifactId><groupId>com.daobili</groupId><version>Beikezhan.M1</version></parent><modelVersion>4.0.0</modelVersion><artifactId>demo-dubbo-nacos-consumer</artifactId><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId><version>2.1.2.RELEASE</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId><version>2.1.2.RELEASE</version></dependency><dependency><groupId>com.daobili</groupId><artifactId>demo-dubbo-nacos-api</artifactId><version>Beikezhan.M1</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId><version>2.1.1.RELEASE</version><exclusions><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId><version>2.1.1.RELEASE</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.5</version></dependency></dependencies></project>

4.项目配置

4.0 demo-dubbo-nacos-api 的 application.yml

4.1 demo-dubbo-nacos-provider 的 application.yml

server:
  port: 8866
spring:
  application:
    # 应用名称
    name: demo-dubbo-nacos-provider
  # 配置 Nacos 注册中心
  cloud:
    nacos:
      discovery:
        # Nacos 服务器地址-单机版
        server-addr: 127.0.0.1:8848
dubbo:
  # 提供方应用信息,用于计算依赖关系
  application:
    name: demo-dubbo-nacos-provider
  # 扫描需要暴露的服务,可以被 @EnableDubbo 注解替代
  scan:
    base-packages: com.daobili.provider
  # 用 dubbo 协议在 20880 端口暴露服务
  protocol:
    name: dubbo
    port: 20880
  # 使用 nacos 注册中心暴露服务地址
  registry:
    protocol: nacos
    address: spring-cloud://localhost

4.2 demo-dubbo-nacos-consumer 的 application.yml

server:
  port: 8867
spring:
  application:
    # 应用名称
    name: demo-dubbo-nacos-consumer
  # 配置 Nacos 注册中心
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
dubbo:
  application:
    name: demo-dubbo-nacos-consumer
  cloud:
    # 用于消费者订阅提供方的应用名称列表
    subscribed-services: demo-dubbo-nacos-provider
  scan:
    base-packages: com.daobili.provider

5.项目测试代码

5.0 demo-dubbo-nacos-api 的 DemoService

publicinterfaceDemoService {
Stringgreet(Stringname);
}

5.1 demo-dubbo-nacos-provider 的 DemoServiceImpl


@Service(
version="1.0.0",
interfaceClass=DemoService.class,
cluster="failfast",
loadbalance="roundrobin")
publicclassDemoServiceImplimplementsDemoService {
@OverridepublicStringgreet(Stringname) {
return"hello, "+name;
    }
}

5.2 demo-dubbo-nacos-consumer 的 TestController


@RestControllerpublicclassTestController {
@Reference(
version="1.0.0",
interfaceClass=DemoService.class,
cluster="failfast"    )
privateDemoServicedemoService;
@GetMapping("/greet")
publicStringgreet(Stringname) {
returndemoService.greet(name);
    }
}

6.项目启动类

6.0 demo-dubbo-nacos-provider 的 ProviderApplication


@SpringBootApplicationpublicclassProviderApplication {
publicstaticvoidmain(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
    }
}

6.1 demo-dubbo-nacos-consumer 的 ConsumerApplication


@SpringBootApplicationpublicclassConsumerApplication {
publicstaticvoidmain(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
    }
}

6.测试

  1. 启动本地Nacos服务器,访问`http://localhost:8848/nacos/ `

控制台显示如下:

d942e3c29afd5539680a2651829fabf6.png


  1. 依次启动`demo-dubbo-nacos-provider`、`demo-dubbo-nacos-consumer`

dbb652aea4c1d2cff7d82854dbd0ad61.png


* 3.调试测试接口 http://localhost:8867/greet?name=bamaw


目录
相关文章
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
43 2
|
2月前
|
存储 Java 调度
Sppring集成Quartz简单案例详解 包括(添加、停止、恢复、删除任务、获取下次执行时间等)
Sppring集成Quartz简单案例详解 包括(添加、停止、恢复、删除任务、获取下次执行时间等)
35 2
|
3月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
147 1
|
4月前
|
算法 API Apache
Flink CDC:新一代实时数据集成框架
本文源自阿里云实时计算团队 Apache Flink Committer 任庆盛在 Apache Asia CommunityOverCode 2024 的分享,涵盖 Flink CDC 的概念、版本历程、内部实现及社区未来规划。Flink CDC 是一种基于数据库日志的 CDC 技术实现的数据集成框架,能高效完成全量和增量数据的实时同步。自 2020 年以来,Flink CDC 经过多次迭代,已成为功能强大的实时数据集成工具,支持多种数据库和数据湖仓系统。未来将进一步扩展生态并提升稳定性。
702 2
Flink CDC:新一代实时数据集成框架
|
4月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
91 2
zabbix agent集成percona监控MySQL的插件实战案例
|
3月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
210 0
|
5月前
|
存储 消息中间件 前端开发
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
59 1
|
5月前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
5月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
234 1
|
5月前
|
人工智能
LLama+Mistral+…+Yi=? 免训练异构大模型集成学习框架DeePEn来了
【8月更文挑战第6天】DeePEn是一种免训练异构大模型集成学习框架,旨在通过融合多个不同架构和参数的大模型输出概率分布,提升整体性能。它首先将各模型输出映射至统一概率空间,然后进行聚合,并最终反转回单一模型空间以生成输出。实验证明,在知识问答和推理任务上,DeePEn相比单一大模型如LLaMA和Mistral有显著提升,但其效果受模型质量和数量影响,并且计算成本较高。[论文: https://arxiv.org/abs/2404.12715]
48 1