基于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月前
|
Java Nacos 数据库
使用 nacos 搭建注册中心及配置中心
使用 nacos 搭建注册中心及配置中心
68 5
|
2月前
|
NoSQL Java Nacos
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
73 3
|
18天前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
28 2
zabbix agent集成percona监控MySQL的插件实战案例
|
1月前
|
Dubbo 网络协议 Java
RPC框架:一文带你搞懂RPC
这篇文章全面介绍了RPC(远程过程调用)的概念、原理和应用场景,解释了RPC如何工作以及为什么在分布式系统中广泛使用,并探讨了几种常用的RPC框架如Thrift、gRPC、Dubbo和Spring Cloud,同时详细阐述了RPC调用流程和实现透明化远程服务调用的关键技术,包括动态代理和消息的编码解码过程。
RPC框架:一文带你搞懂RPC
|
1月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
97 1
|
23天前
|
机器学习/深度学习 存储 搜索推荐
Elasticsearch与深度学习框架的集成案例研究
Elasticsearch 是一个强大的搜索引擎和分析引擎,广泛应用于实时数据处理和全文搜索。深度学习框架如 TensorFlow 和 PyTorch 则被用来构建复杂的机器学习模型。本文将探讨如何将 Elasticsearch 与这些深度学习框架集成,以实现高级的数据分析和预测任务。
20 0
|
1月前
|
XML 存储 JSON
(十二)探索高性能通信与RPC框架基石:Json、ProtoBuf、Hessian序列化详解
如今这个分布式风靡的时代,网络通信技术,是每位技术人员必须掌握的技能,因为无论是哪种分布式技术,都离不开心跳、选举、节点感知、数据同步……等机制,而究其根本,这些技术的本质都是网络间的数据交互。正因如此,想要构建一个高性能的分布式组件/系统,不得不思考一个问题:怎么才能让数据传输的速度更快?
|
2月前
|
Nacos 微服务
Zookeeper 的 ZAB 协议 以及 zookeeper 与 nacos 注册中心比对
Zookeeper 的 ZAB 协议 以及 zookeeper 与 nacos 注册中心比对
40 4
|
1月前
|
Java Nacos Docker
"揭秘!Docker部署Seata遇上Nacos,注册成功却报错?这些坑你不得不防!一网打尽解决秘籍,让你的分布式事务稳如老狗!"
【8月更文挑战第15天】在微服务架构中,Nacos搭配Seata确保数据一致性时,Docker部署Seata后可能出现客户端连接错误,如“can not connect to services-server”。此问题多由网络配置不当、配置文件错误或版本不兼容引起。解决策略包括:调整Docker网络设置确保可达性;检查并修正`file.conf`和`registry.conf`中的Nacos地址和端口;验证Seata与Nacos版本兼容性;修改配置后重启服务;参考官方文档和最佳实践进行配置。通过这些步骤,能有效排除故障,保障服务稳定运行。
36 0
|
1月前
|
Kubernetes Nacos 微服务
【技术难题破解】Nacos v2.2.3 + K8s 微服务注册:强制删除 Pod 却不消失?!7步排查法+实战代码,手把手教你解决Nacos Pod僵死问题,让服务瞬间满血复活!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但有时会遇到“v2.2.3 k8s 微服务注册nacos强制删除 pod不消失”的问题。本文介绍此现象及其解决方法,帮助开发者确保服务稳定运行。首先需检查Pod状态与事件、配置文件及Nacos配置,确认无误后可调整Pod生命周期管理,并检查Kubernetes版本兼容性。若问题持续,考虑使用Finalizers、审查Nacos日志或借助Kubernetes诊断工具。必要时,可尝试手动强制删除Pod。通过系统排查,通常能有效解决此问题。
42 0