zoukankan      html  css  js  c++  java
  • Spring Cloud Alibaba基础教程:Nacos+Dubbo

    Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案。 它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用Spring Cloud开发应用程序。Dubbo是Alibaba 推出的一款高性能 RPC 框架,通过 Spring Cloud Alibaba 可以方便的与 Spring Cloud 继承提供更加强大的服务治理能力。

    1. 下载 nacos 并启动

    Nacos作为服务注册中心,提供注册发现能力。下载完成之后解压并启动。

    sh startup.sh -m standalone # 单机模式启动
    

    启动完成之后打开控制台页面,默认账号密码:nacos/nacos
    Nacos

    2. 创建父工程

    通过 IDEA 创建父工程,maven 项目类型选择 pom,并添加一下依赖

        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Hoxton.SR3</version>
                    <scope>import</scope>
                    <type>pom</type>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>2.2.1.RELEASE</version>
                    <scope>import</scope>
                    <type>pom</type>
                </dependency>
            </dependencies>
        </dependencyManagement>
    

    3. 创建 sample-api

    添加接口

    public interface EchoService {
    
        String echo(String message);
    
    }
    

    4. 创建 server 工程

    添加依赖

        <dependencies>
            <dependency>
                <groupId>com.example</groupId>
                <artifactId>sample-api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-dubbo</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
        </dependencies>
    

    创建启动类

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableDubbo(scanBasePackages = {"com.example.server.service"})
    public class ServerApp {
    
        public static void main(String[] args) {
            SpringApplication.run(ServerApp.class, args);
        }
    }
    

    配置文件

    dubbo:
      protocol:
        # dubbo 协议
        name: dubbo
        # dubbo 协议端口( -1 表示自增端口,从 20880 开始)
        port: -1
      registry:
        # 挂载到 Spring Cloud 注册中心
        address: spring-cloud://localhost
      application:
        name: ${spring.application.name}
        id: ${spring.application.name}
      provider:
        scope: remote
    
    spring:
      application:
        # Dubbo 应用名称
        name: server
      main:
        # Spring Boot 2.1 需要设定
        allow-bean-definition-overriding: true
      cloud:
        nacos:
          # Nacos 服务发现与注册配置
          discovery:
            server-addr: 127.0.0.1:8848
    

    启动服务端,观察 Nacos 页面是否注册成功,接下来创建消费端

    5. 创建 client 工程

    添加依赖

        <dependencies>
            <dependency>
                <groupId>com.example</groupId>
                <artifactId>sample-api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-actuator</artifactId>
            </dependency>
    
            <!-- Dubbo Spring Cloud Starter -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-dubbo</artifactId>
            </dependency>
    
            <!-- Spring Cloud Nacos Service Discovery -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
        </dependencies>
    

    创建启动类

    @SpringBootApplication
    @EnableDiscoveryClient
    @RestController
    public class ClientApp {
        @Reference
        private EchoService echoService;
    
        @GetMapping("/echo")
        public String echo(String message) {
            return echoService.echo(message);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(ClientApp.class, args);
        }
    }
    

    配置文件

    dubbo:
      registry:
        # 挂载到 Spring Cloud 注册中心
        address: spring-cloud://localhost
      cloud:
        subscribed-services: server
      application:
        name: ${spring.application.name}
        id: ${spring.application.name}
    
    spring:
      application:
        # Dubbo 应用名称
        name: client
      main:
        # Spring Boot 2.1 需要设定
        allow-bean-definition-overriding: true
      cloud:
        nacos:
          # Nacos 服务发现与注册配置
          discovery:
            server-addr: 127.0.0.1:8848
    

    启动消费端,观察 Nacos 页面是否注册成功。

    6. 测试

    测试接口响应

    curl http://localhost:8080/echo?message=bro
    

    返回内容如下

    [echo] Hello, bro
    

    基于 Dubbo 的 RPC 调用成功。

  • 相关阅读:
    toj 2819 Travel
    toj 2807 Number Sort
    zoj 2818 Prairie dogs IV
    zoj 1276 Optimal Array Multiplication Sequence
    toj 2802 Tom's Game
    toj 2798 Farey Sequence
    toj 2815 Searching Problem
    toj 2806 Replace Words
    toj 2794 Bus
    css截取字符
  • 原文地址:https://www.cnblogs.com/thisismartin/p/13035256.html
Copyright © 2011-2022 走看看