AI 摘要
AI
正在生成摘要...

本文将全面演示如何基于 Spring Cloud AlibabaNacos 实现微服务核心功能,服务注册发现。

环境准备

  • JDK 17+
  • Spring Boot 3.2.4
  • Spring Cloud 2023.0.1
  • Nacos Server 2.3.0 (下载地址)
BASH
# 启动Nacos服务器(单机模式) 参数-m model的意思
startup.cmd -m standalone

4.png

一、创建项目及模块

1. 创建父工程cloud-demo

项目整体结构如下:model为项目中统一管理的实体类对象与services平级,services为微服务模块的父模块。
1.png

TEXT
📁cloud-demo
├─ 📄pom.xml
├─ 📁model
│  ├─ 📄pom.xml
│  └─ 📁src
│     ├─ 📁test
│     │  └─ 📁java
│     └─ 📁main
│        ├─ 📁resources
│        └─ 📁java
└─ 📁services
   ├─ 📄pom.xml
   ├─ 📁service-order
   │  ├─ 📄pom.xml
   │  └─ 📁src
   │     ├─ 📁test
   │     │  └─ 📁java
   │     └─ 📁main
   │        ├─ 📁resources
   │        └─ 📁java
   └─ 📁service-product
      ├─ 📄pom.xml
      └─ 📁src
         ├─ 📁test
         │  └─ 📁java
         └─ 📁main
            ├─ 📁resources
            └─ 📁java

二、服务注册与发现

1. 在cloud-demo中的pom.xml中添加配置项和依赖

XML
<packaging>pom</packaging>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.在services中的pom.xml中添加配置项和依赖

XML
<packaging>pom</packaging>
<dependencies>
    <!--服务配置-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <!--实体对象-->
    <dependency>
        <groupId>top.strarry</groupId>
        <artifactId>model</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <!--服务发现-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!--远程调用-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>annotationProcessor</scope>
    </dependency>
</dependencies>

3.在service-order和service-product微服务中添加依赖

XML
<dependencies>
    <!--负载均衡-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

4.修改service-order微服务中配置项

YAML
spring:
  application:
    name: service-order
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
  config:
    import: nacos:service-order.yaml
server:
  port: 8000

5.修改service-product微服务中配置项

YAML
spring:
  application:
    name: service-product
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
server:
  port: 9000

三、启动微服务

1.编写每个微服务的启动类,商品微服务启动类如下:

JAVA
package top.strarry.product;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

2.启动集群:

2.png

服务名 实例数 健康实例 端口号
service-order 2 2 8000、8001
service-product 2 2 9000、9001

2. 验证服务注册

访问 Nacos 控制台 http://localhost:8848/nacos,在服务列表中可见注册的服务:
3.png

评论