基于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


目录
相关文章
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
5304 14
|
Dubbo Java 应用服务中间件
微服务框架Dubbo环境部署实战
微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
1441 17
微服务框架Dubbo环境部署实战
|
负载均衡 Dubbo NoSQL
Dubbo框架的1个核心设计点
Java领域要说让我最服气的RPC框架当属Dubbo,原因有许多,但是最吸引我的还是它把远程调用这个事情设计得很有艺术。
Dubbo框架的1个核心设计点
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
394 4
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
1503 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
负载均衡 监控 Dubbo
分布式框架-dubbo
分布式框架-dubbo
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架
|
开发框架 Dubbo 应用服务中间件
微服务开发框架-----Apache Dubbo
这篇文章介绍了Apache Dubbo微服务开发框架,它提供RPC通信和微服务治理能力,支持服务发现、负载均衡和流量治理等功能,并强调了Dubbo在微服务规模化实践和企业级治理方面的优势。
微服务开发框架-----Apache Dubbo
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用