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

举报
JAVA日知录 发表于 2022/04/14 01:40:17 2022/04/14
1.8k+ 0 0
【摘要】 使用最新版的DUBBO构建你的微服务体系! NACOS注册中心 从github下载最新版本的nacos 上传至服务器并解压 单机启动sh startup.sh -m standalone nacos 控制台访问地址http://192.168.136.129:8848/nacos,使用账号nacos/nacos登录...

使用最新版的DUBBO构建你的微服务体系!

NACOS注册中心

  • 从github下载最新版本的nacos

  • 上传至服务器并解压

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

  • nacos 控制台访问地址http://192.168.136.129:8848/nacos,使用账号nacos/nacos登录并访问

项目框架

本次案例包含三个组件

  • 公共接口层 dubbo-api

  • 生产者  dubbo-provider

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

父目录dubbo-demo

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


       <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>
           <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>
                   <!-- Apache Dubbo  -->
                   <dependency>
                       <groupId>org.apache.dubbo</groupId>
                       <artifactId>dubbo-dependencies-bom</artifactId>
                       <version>${dubbo.version}</version>
                       <type>pom</type>
                       <scope>import</scope>
                   </dependency>
                   <!-- Dubbo Registry Nacos -->
                   <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>
                   <!-- Dubbo Spring Boot Starter -->
                   <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


       <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">
           <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
        */
       public interface HelloService {
           String sayHello();
       }
   
  

生产者dubbo-provider

  • pom


       <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">
           <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>
               <!-- Dubbo Registry Nacos -->
               <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-provider
       dubbo.registry.address = nacos://192.168.136.129:8848
       dubbo.scan.base-packages=com.jianzh5.provider.service.impl
       dubbo.protocol.port=20881
       dubbo.protocol.name=dubbo
   
  
  • 接口实现


       @Service
       public class HelloServiceImpl implements HelloService {
           public String sayHello() {
              return "欢迎关注微信公众号:JAVA日知录";
           }
       }
   
  

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

  • 启动类


       @SpringBootApplication
       @EnableDubbo
       public class PrivoderBootstrap {
           public static void main(String[] args) {
               SpringApplication.run(PrivoderBootstrap.class, args);
           }
       }
   
  

需要引入@EnableDubbo注解

消费者dubbo-consumer

  • pom


       <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">
           <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>
               <!-- Dubbo Registry Nacos -->
               <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-consumer
       dubbo.registry.address = nacos://192.168.136.129:8848
       server.port=9090
   
  
  • 消费者HelloController


       /**
        * @author jianzh5
        * @date 2019/11/5 11:29
        */
       @RestController
       public class HelloController {
           @Reference
           private HelloService helloService;
           @GetMapping("/sayHello")
           public String sayHello(){
              return helloService.sayHello();
           }
       }
   
  

使用@Reference注解注入HelloService

  • 接口启动类


       @SpringBootApplication
       public class ConsumerBootstrap {
           public static void main(String[] args) {
               SpringApplication.run(ConsumerBootstrap.class, args);
           }
       }
   
  

项目启动

  • 启动生产者 dubbo-provider

  • 启动消费者 dubbo-consumer

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

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

文章来源: jianzh5.blog.csdn.net,作者:飘渺Jam,版权归原作者所有,如需转载,请联系作者。

原文链接:jianzh5.blog.csdn.net/article/details/102927802

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。