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 调用成功。

  • 相关阅读:
    Convert、Parse、TryParse、(int)区别及可能引发性能问题
    重写、覆盖、重载、多态几个概念的区别分析
    计算机系统的硬件组成(转)
    如何选择Html.RenderPartial和Html.RenderAction
    位运算(转)
    Java程序员面试中的多线程问题
    请转到控制面板来配置或安装系统组件
    开篇
    DropDownList 不能有多个项被选定!
    有关rollup和cube的使用方法讨论
  • 原文地址:https://www.cnblogs.com/thisismarc/p/13035256.html
Copyright © 2011-2022 走看看