SpringBoot2.1.9+dubbo2.7.3+Nacos1.1.4构建你的微服务体系

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 使用最新版的DUBBO构建你的微服务体系!

NACOS注册中心


  • 从github下载最新版本的nacos


  • 上传至服务器并解压


  • 单机启动sh startup.sh -m standalone



1.png


项目框架


本次案例包含三个组件


  • 公共接口层 dubbo-api


  • 生产者  dubbo-provider


  • 消费者 dubbo-consumer 代码目录如下:


2.png


父目录dubbo-demo


父目录主要是定义公共组件依赖,版本号,pom文件如下


<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><packaging>pom</packaging><modules><module>dubbo-api</module><module>dubbo-provider</module><module>dubbo-consumer</module></modules><groupId>com.jianzh5</groupId><artifactId>dubbo-demo</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>1.8</java.version><netty-all.version>4.0.35.Final</netty-all.version><spring-boot.version>2.1.9.RELEASE</spring-boot.version><dubbo.version>2.7.3</dubbo.version><nacos-client.version>1.1.4</nacos-client.version></properties><dependencyManagement><dependencies><!--SpringBoot--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!--ApacheDubbo--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-bom</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency><!--DubboRegistryNacos--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>${nacos-client.version}</version></dependency><!--DubboSpringBootStarter--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion><exclusion><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency><!--接口--><dependency><groupId>com.jianzh5</groupId><artifactId>dubbo-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>


在pom文件中直接依赖接口,这样生产者和消费者都可以使用了


接口层dubbo-api定义


pom


<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>dubbo-demo</artifactId><groupId>com.jianzh5</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.jianzh5</groupId><artifactId>dubbo-api</artifactId><packaging>jar</packaging></project>


定义真实的接口


/*** @author jianzh5* @date 2019/11/5 10:45*/publicinterfaceHelloService {
StringsayHello();
}


生产者dubbo-provider


pom


<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>dubbo-demo</artifactId><groupId>com.jianzh5</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.jianzh5</groupId><artifactId>dubbo-provider</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--Dubbo--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId></dependency><!--DubboRegistryNacos--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></dependency><dependency><groupId>com.jianzh5</groupId><artifactId>dubbo-api</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>


配置文件application.xml


dubbo.application.name=dubbo-providerdubbo.registry.address=nacos://192.168.136.129:8848dubbo.scan.base-packages=com.jianzh5.provider.service.impldubbo.protocol.port=20881dubbo.protocol.name=dubbo


接口实现


@ServicepublicclassHelloServiceImplimplementsHelloService {
publicStringsayHello() {
return"欢迎关注微信公众号:JAVA日知录";
    }
}


注意这里的@service引用的是org.apache.dubbo.config.annotation.Service,不要引用错了


启动类


@SpringBootApplication@EnableDubbopublicclassPrivoderBootstrap {
publicstaticvoidmain(String[] args) {
SpringApplication.run(PrivoderBootstrap.class, args);
    }
}


需要引入@EnableDubbo注解


消费者dubbo-consumer


pom


<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>dubbo-demo</artifactId><groupId>com.jianzh5</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.jianzh5</groupId><artifactId>dubbo-consumer</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--Dubbo--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId></dependency><!--DubboRegistryNacos--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></dependency><dependency><groupId>com.jianzh5</groupId><artifactId>dubbo-api</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>


配置文件application.properties


spring.application.name=dubbo-consumerdubbo.registry.address=nacos://192.168.136.129:8848server.port=9090


消费者HelloController


/*** @author jianzh5* @date 2019/11/5 11:29*/@RestControllerpublicclassHelloController {
@ReferenceprivateHelloServicehelloService;
@GetMapping("/sayHello")
publicStringsayHello(){
returnhelloService.sayHello();
    }
}



使用@Reference注解注入HelloService


接口启动类


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


项目启动


  • 启动生产者 dubbo-provider


  • 启动消费者 dubbo-consumer


  • 查看nacos控制台,观察是否注册


3.png


访问浏览器http://localhost:9090/sayHello查看接口返回

目录
相关文章
|
3天前
|
消息中间件 监控 API
构建微服务架构:从理论到实践的全面指南
本文将深入探讨微服务架构的设计原则、实施步骤和面临的挑战。与传统的单体架构相比,微服务通过其独立性、可伸缩性和灵活性,为现代应用开发提供了新的视角。文章将介绍如何从零开始规划和部署一个微服务系统,包括选择合适的技术栈、处理数据一致性问题以及实现服务间通信。此外,我们还将讨论在迁移至微服务架构过程中可能遇到的技术和组织挑战,以及如何克服这些难题以实现顺利过渡。
|
16天前
|
运维 监控 Docker
构建高效微服务架构:从理论到实践构建高效自动化运维体系:Ansible与Docker的完美融合
【5月更文挑战第31天】 在当今软件开发的世界中,微服务架构已经成为了实现可伸缩、灵活且容错的系统的关键策略。本文将深入探讨如何从零开始构建一个高效的微服务系统,涵盖从概念理解、设计原则到具体实施步骤。我们将重点讨论微服务设计的最佳实践、常用的技术栈选择、以及如何克服常见的挑战,包括服务划分、数据一致性、服务发现和网络通信等。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们构建出既健壮又易于维护的微服务系统。
|
16天前
|
Cloud Native 数据库 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第31天】 在数字化转型的浪潮中,微服务架构已成为企业技术战略的核心组成部分。本文将深入探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术选型、以及实践中的挑战与解决方案。通过对微服务架构的细致剖析,我们将提供一套实用的指南,帮助后端开发者优化系统结构,提升服务的可靠性、伸缩性和敏捷性。
|
16天前
|
敏捷开发 API 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第31天】 在现代软件开发的浪潮中,微服务架构已经成为企业追求敏捷开发、持续交付和系统弹性的关键解决方案。本文将深入探讨微服务架构的概念、优势以及如何构建一个高效的微服务系统。通过实际案例分析,我们将展示如何利用容器化、服务网格、API网关等技术手段,实现服务的解耦、分布式管理和网络通信优化。
|
1天前
|
监控 API 数据库
构建高效后端:微服务架构的实战指南
【6月更文挑战第14天】在数字化浪潮下,后端开发面临着前所未有的挑战和机遇。本文将深入探讨微服务架构的设计理念、实现方式及其在现代软件开发中的重要性,为读者提供一份全面而实用的微服务实战手册。
|
2天前
|
Java Nacos 数据格式
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
14 3
|
11天前
|
运维 Kubernetes 持续交付
构建高效后端:微服务架构的设计与实践
本文深入探讨了微服务架构的设计原则和实践方法,旨在为读者提供一套完整的微服务开发指南。通过分析微服务的核心优势,如灵活性、可扩展性与独立部署能力,文章详细阐述了如何有效规划服务边界、选择合适的通信协议以及确保服务的高可用性和弹性。此外,还讨论了在微服务实施过程中可能遇到的挑战,包括数据一致性和服务发现机制,以及如何通过现代技术栈和最佳实践来克服这些挑战。
|
16天前
|
Kubernetes 负载均衡 开发者
构建高效后端服务:从微服务到容器化部署
【5月更文挑战第31天】本文深入探讨了现代后端开发中的关键概念,包括微服务的架构设计、容器化技术的运用以及它们如何共同提升应用的可扩展性、可靠性和性能。通过具体案例分析,我们将揭示这些技术是如何在实际开发中被实施的,并讨论它们对后端开发流程的影响。
|
16天前
|
消息中间件 数据库 网络架构
构建高效后端:微服务架构的优化策略
【5月更文挑战第31天】在这篇文章中,我们将深入探讨如何通过采用微服务架构来提升后端开发的效率和性能。我们将分析微服务架构的关键优势,并讨论如何克服实施过程中的挑战。通过具体的案例研究,我们将展示如何优化微服务架构以实现最佳的性能和可维护性。无论你是后端开发的新手还是经验丰富的专业人士,这篇文章都将为你提供有价值的见解和实用的技巧。
|
16天前
|
消息中间件 运维 监控
构建高效微服务架构:后端开发的新范式
【5月更文挑战第31天】在现代软件开发中,随着业务需求的多样化和系统复杂性的增加,传统的单体应用架构逐渐显得笨重且难以适应快速变化。微服务架构作为一种新兴的后端开发模式,以其灵活性、可扩展性和独立部署的特点,成为解决这一问题的关键。本文将探讨微服务架构的核心概念、设计原则以及如何在实际项目中实现一个高效的微服务系统。