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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM