微服务的实现步骤详解

导言

在现代软件开发中,微服务架构因其灵活性和可扩展性而备受青睐。本文将介绍如何在 Spring Boot 项目中实现微服务架构,从创建父模块到使用 Nacos 进行服务注册与发现。

一、创建父模块

1. 删除 src 目录

在创建项目时,先删除默认生成的 src 目录,以确保项目结构的整洁和规范。

2. 编写父 pom.xml 文件

配置项目的基础依赖管理,确保各个模块的版本一致性。

<properties>
    <!-- Spring Cloud、Spring Boot及Spring Cloud Alibaba的版本配置 -->
    <spring.cloud.version>2022.0.0</spring.cloud.version>
    <spring.boot.version>3.0.2</spring.boot.version>
    <spring.cloud.alibaba.version>2022.0.0.0</spring.cloud.alibaba.version>
</properties>

注意:版本号需与官方文档一致。

二、父模块添加依赖

在父 pom.xml 中添加以下依赖管理配置,以支持 Spring Cloud、Spring Boot 和 Spring Cloud Alibaba 的功能。

<dependencyManagement>
    <dependencies>
        <!-- Spring Cloud的依赖管理 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring.cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        
        <!-- Spring Boot的依赖管理 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        
        <!-- Spring Cloud Alibaba的依赖管理,用于与阿里巴巴的服务(如Nacos、Sentinel等)集成 -->
        <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>

三、创建子模块

根据项目需求创建子模块,如 movie-providermovie-consumer,用于分别提供服务和消费服务。

子模块配置示例

在子模块的 pom.xml 中配置其与父模块的关系。

<parent>
    <!-- 与父pom.xml文件中的配置保持一致 -->
    <groupId>org.example</groupId>
    <artifactId>springclouddemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath> <!-- 定位父pom -->
</parent>

四、配置父子模块关系

在父 pom.xml 中声明所有子模块,以便于构建和管理。

<modules>
    <module>movie-provider</module>
    <module>movie-consumer</module>
</modules>

五、子模块添加依赖

为每个子模块添加所需的依赖,以实现其功能。

<dependencies>
    <!-- Spring Boot Web Starter,提供构建Web应用的基础依赖(如Spring MVC、嵌入式Tomcat等) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Test Starter,包含测试所需的依赖(如JUnit、Mockito等),用于单元测试和集成测试 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- Spring Boot Actuator,提供生产级应用的监控和管理功能(如健康检查、指标监控等) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!-- Nacos Discovery Starter,用于服务注册和发现,将服务注册到Nacos,并从Nacos中发现其他服务 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <!-- Spring Cloud LoadBalancer,用于客户端负载均衡,实现多个服务实例之间的负载均衡 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
</dependencies>

六、配置属性文件 application.properties

配置 Nacos 基本信息

在两个微服务包中分别配置 application.properties 文件,指定服务名称和 Nacos 地址。

# 服务提供者
server.port=8081
spring.application.name=nacos-producer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

# 服务消费者
spring.application.name=movie-consumer
server.port=8082
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

提示:若不使用 Nacos 进行服务注册与发现,可通过将 spring.cloud.nacos.discovery.enabled 设为 false 来禁用该功能。

启动 Provider 示例

编写并启动服务提供者的主应用类。

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

    @RestController
    public class EchoController {
        @GetMapping(value = "/echo/{string}")
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }
}

启动后,可以在 Nacos 控制台上查看注册的服务信息。

七、启动 Nacos 作为注册中心

进入 nacos-server\bin 目录,并使用以下命令启动 Nacos:

startup.cmd -m standalone

注意:此命令将在单机模式下启动 Nacos,用于开发和测试环境。

推荐阅读

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值