• springCloud+dubbo+nacos(服务注册与发现)入门案例


    1、环境准备

      nacos的下载启动请移步https://nacos.io/zh-cn/docs/what-is-nacos.html此地址,本文使用的nacos版本为1.4.3

    2、项目创建

      使用IDEA创建一个Maven项目,在创建三个模块,分别为spring-cloud-nacos-api、spring-cloud-nacos-provider、spring-cloud-nacos-consumer,其中spring-cloud-nacos-api是抽取出来的公共接口,使用mvn install 命令发布到本地仓库后,在另外两个项目中添加依赖。spring-cloud-nacos-provider、spring-cloud-nacos-consumer为springBoot项目。目录结构如下:

      在spring-cloud-nacos-sample父工程中添加一下的依赖如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <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>
    
        <groupId>org.example</groupId>
        <artifactId>spring-cloud-nacos-sample</artifactId>
        <packaging>pom</packaging>
        <version>1.0-SNAPSHOT</version>
        <modules>
            <module>spring-cloud-nacos-api</module>
            <module>spring-cloud-nacos-provider</module>
            <module>spring-cloud-nacos-consumer</module>
        </modules>
    
        <properties>
    
        </properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>2.3.9.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>2.2.5.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Hoxton.SR9</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <version>2.3.9.RELEASE</version>
            </dependency>
        </dependencies>
    
    </project>

    3、api代码编写

      在api中定义一个接口:使用mvn install 发布到仓库

    public interface IHelloService {
        String sayHello(String name);
    }

    4、编写服务提供者spring-cloud-nacos-provider

      首先,在pom.xml中添加相关依赖如下:(未指定version的已经在父工程中统一管理)

    <?xml version="1.0" encoding="UTF-8"?>
    <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>spring-cloud-nacos-sample</artifactId>
            <groupId>org.example</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>spring-cloud-nacos-provider</artifactId>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-dubbo</artifactId>
            </dependency>
            <dependency>
                <groupId>org.example</groupId>
                <artifactId>spring-cloud-nacos-api</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
        </dependencies>
    
    </project>

      然后,编写主启动类和新建一个类实现api中的接口:

    
    
    @SpringBootApplication
    @DubboComponentScan//会扫描@DubboService发布的远程服务
    public class ProviderApplication {
    public static void main(String[] args) {
    SpringApplication.run(ProviderApplication.class,args);
    }
    }
    1 @DubboService
    2 public class HelloServiceImpl implements IHelloService {
    3     public String sayHello(String name) {
    4         return "hello,"+name;
    5     }
    6 }

      注意:@DubboService作用是将该接口发布为dubbo服务,在老的版本中叫@Service

      配置application.yml:

    spring:
      application:
        name: spring-cloud-nacos-sample
      cloud:
        nacos:
          discovery:
         #nacos注册中心地址 server
    -addr: 127.0.0.1:8848 dubbo: protocol:
       #使用dubbo协议 name: dubbo
    #端口号 建议都设置一下 port:
    9000
       #dubbo主机绑定 host: localhost registry:
      
    #Dubbo服务注册中心的配置地址,值spring-cloud://localhost表示挂载到SpringCloud注册中心,不配置会提示没有配置中心的错误
       address: spring-cloud://localhost

     5、编写服务消费者spring-cloud-nacos-consumer

      创建主启动类:

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

          添加maven依赖:  

    <?xml version="1.0" encoding="UTF-8"?>
    <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>spring-cloud-nacos-sample</artifactId>
            <groupId>org.example</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>spring-cloud-nacos-consumer</artifactId>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-dubbo</artifactId>
            </dependency>
            <dependency>
                <groupId>org.example</groupId>
                <artifactId>spring-cloud-nacos-api</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
        </dependencies>
    
    </project>

      创建一个HelloController测试类,定义一个接口:

    @RestController
    public class HelloController {
    
        @DubboReference
        private IHelloService helloService;
    
        @GetMapping("/say")
        public String sayHello(){
            return helloService.sayHello("mic");
        }
    }

      配置application.yml:

    spring:
      application:
        name: spring-cloud-nacos-consumer
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
    
    dubbo:
      cloud:
    #订阅已经注册的服务,(实际为spring-cloud-nacos-provider服务中yml文件配置的spring.application.name的值) subscribed
    -services: spring-cloud-nacos-sample server: port: 9000

      最后,在浏览器端输入 localhost:9000/say   看到响应 hello,mic 说明操作成功!浏览器访问localhost:8848/nacos后,在服务管理——>服务列表查看响应的服务实例

  • 相关阅读:
    Oracle PL/SQL中如何使用%TYPE和%ROWTYPE
    SVN使用教程总结
    实践SQLServer Tuning
    SQL性能优化:如何定位网络性能问题
    windows7下修改hosts文件无效解决办法
    jQuery Event.stopPropagation() 函数详解
    引用js或css后加?v= 版本号的用法
    JS实现点击跳转登陆邮箱
    DWZ (JUI) 教程 navTab 刷新分析
    CPU与内存的关系
  • 原文地址:https://www.cnblogs.com/GOOGnine/p/16012493.html
Copyright © 2020-2023  润新知