自学内容网 自学内容网

Spring Boot 和 Spring Cloud 构建一个完整的微服务架构——在线购物系统

接上一篇博客,大家可以结合一起看看实例理解https://blog.csdn.net/speaking_me/article/details/143917383?spm=1001.2014.3001.5502

构建一个综合性的大型微服务项目可以帮助开发者更全面地理解和掌握 Spring Boot 和 Spring Cloud 的应用。

接下来,我将通过一个具体的例子——一个在线购物系统,来展示如何使用 Spring Boot 和 Spring Cloud 构建一个完整的微服务架构。

在线购物系统案例

1. 项目概述

该项目将模拟一个完整的在线购物系统,包括以下几个主要模块:

  • 用户服务(User Service)
  • 商品服务(Product Service)
  • 订单服务(Order Service)
  • 认证和授权服务(Auth Service)
  • 配置中心(Config Server)
  • 服务发现(Eureka Server)
  • API 网关(Gateway Service)
  • 链路追踪(Zipkin)
  • 配置管理(Config Server)
  • 断路器(Hystrix)
2. 技术栈
  • Spring Boot: 用于快速构建各个微服务。
  • Spring Cloud: 提供微服务基础设施支持。
  • MySQL: 数据库存储。
  • Eureka: 服务发现。
  • Config Server: 集中配置管理。
  • Hystrix: 断路器。
  • Zipkin: 链路追踪。
  • Spring Cloud Gateway: API 网关。
  • RabbitMQ: 消息队列。
3. 项目结构
online-shopping-system
├── auth-service
├── config-server
├── eureka-server
├── gateway-service
├── order-service
├── product-service
├── user-service
├── zipkin-server
└── pom.xml
4. 模块详解
4.1 Eureka Server

功能: 服务发现和注册中心。

创建步骤:

  1. 创建一个新的 Spring Boot 项目,选择以下依赖:

    • Spring Web
    • Spring Cloud Starter Netflix Eureka Server
  2. 修改 pom.xml 文件,添加 Spring Cloud 版本管理:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  3. 在主类中添加 @EnableEurekaServer 注解:

    package com.example.eurekaserver;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication.class, args);
        }
    }
  4. application.properties 文件中配置 Eureka 服务注册中心:

    server.port=8761
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
4.2 Config Server

功能: 集中配置管理。

创建步骤:

  1. 创建一个新的 Spring Boot 项目,选择以下依赖:

    • Spring Web
    • Spring Cloud Config Server
  2. 在主类中添加 @EnableConfigServer 注解:

    package com.example.configserver;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.config.server.EnableConfigServer;
    
    @SpringBootApplication
    @EnableConfigServer
    public class ConfigServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConfigServerApplication.class, args);
        }
    }
  3. application.properties 文件中配置 Config Server:

    server.port=8888
    spring.profiles.active=native
    spring.cloud.config.server.native.search-locations=file:/config-repo/
4.3 User Service

功能: 用户管理服务,包括用户注册、登录等功能。

创建步骤:

  1. 创建一个新的 Spring Boot 项目,选择以下依赖:

    • Spring Web
    • Spring Data JPA
    • Spring Security
    • Spring Cloud Starter Netflix Eureka Client
    • Spring Cloud Starter Config
  2. application.properties 文件中配置 Eureka 客户端和 Config Client:

    spring.application.name=user-service
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    spring.cloud.config.uri=http://localhost:8888
  3. 创建用户实体、仓库、服务和控制器,类似于前面的用户管理服务示例。

4.4 Product Service

功能: 商品管理服务,包括商品列表、详情等功能。

创建步骤:

  1. 创建一个新的 Spring Boot 项目,选择以下依赖:

    • Spring Web
    • Spring Data JPA
    • Spring Cloud Starter Netflix Eureka Client
    • Spring Cloud Starter Config
  2. application.properties 文件中配置 Eureka 客户端和 Config Client:

    spring.application.name=product-service
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    spring.cloud.config.uri=http://localhost:8888
  3. 创建商品实体、仓库、服务和控制器。

4.5 Order Service

功能: 订单管理服务,包括下单、查看订单等功能。

创建步骤:

  1. 创建一个新的 Spring Boot 项目,选择以下依赖:

    • Spring Web
    • Spring Data JPA
    • Spring Cloud Starter Netflix Eureka Client
    • Spring Cloud Starter Config
    • Spring Cloud Starter OpenFeign
    • Spring Cloud Starter Netflix Hystrix
  2. application.properties 文件中配置 Eureka 客户端和 Config Client:

    spring.application.name=order-service
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    spring.cloud.config.uri=http://localhost:8888
  3. 创建订单实体、仓库、服务和控制器。

  4. 使用 Feign 客户端调用其他服务(如用户服务和商品服务)。

  5. 使用 Hystrix 实现断路器。

4.6 Auth Service

功能: 认证和授权服务,提供用户认证和授权功能。

创建步骤:

  1. 创建一个新的 Spring Boot 项目,选择以下依赖:

    • Spring Web
    • Spring Security
    • Spring Cloud Starter Netflix Eureka Client
    • Spring Cloud Starter Config
  2. application.properties 文件中配置 Eureka 客户端和 Config Client:

    spring.application.name=auth-service
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    spring.cloud.config.uri=http://localhost:8888
  3. 配置 Spring Security,实现 JWT 认证和授权。

4.7 Gateway Service

功能: API 网关,统一管理微服务之间的交互。

创建步骤:

  1. 创建一个新的 Spring Boot 项目,选择以下依赖:

    • Spring Web
    • Spring Cloud Gateway
    • Spring Cloud Starter Netflix Eureka Discovery
  2. 在主类中添加 @EnableDiscoveryClient 注解:

    package com.example.gateway;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class GatewayApplication {
        public static void main(String[] args) {
            SpringApplication.run(GatewayApplication.class, args);
        }
    }
  3. application.properties 文件中配置 Gateway:

    server.port=8080
    spring.application.name=gateway-service
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    spring.cloud.gateway.routes[0].id=user-service
    spring.cloud.gateway.routes[0].uri=lb://user-service
    spring.cloud.gateway.routes[0].predicates[0]=Path=/users/**
    spring.cloud.gateway.routes[1].id=product-service
    spring.cloud.gateway.routes[1].uri=lb://product-service
    spring.cloud.gateway.routes[1].predicates[0]=Path=/products/**
    spring.cloud.gateway.routes[2].id=order-service
    spring.cloud.gateway.routes[2].uri=lb://order-service
    spring.cloud.gateway.routes[2].predicates[0]=Path=/orders/**
4.8 Zipkin Server

功能: 链路追踪,帮助定位和分析问题。

创建步骤:

  1. 创建一个新的 Spring Boot 项目,选择以下依赖:

    • Spring Web
    • Spring Cloud Sleuth
    • Spring Cloud Starter Zipkin
  2. 在主类中添加 @EnableZipkinServer 注解:

    package com.example.zipkin;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.sleuth.zipkin.stream.EnableZipkinStreamServer;
    
    @SpringBootApplication
    @EnableZipkinStreamServer
    public class ZipkinServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(ZipkinServerApplication.class, args);
        }
    }
  3. application.properties 文件中配置 Zipkin:

    server.port=9411
    spring.zipkin.stream.enabled=true
    spring.zipkin.stream.binders.rabbit.type=input
    spring.rabbitmq.host=localhost
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
5. 运行和测试
  1. 启动 Eureka Server:

    cd eureka-server
    ./mvnw spring-boot:run
  2. 启动 Config Server:

    cd config-server
    ./mvnw spring-boot:run
  3. 启动 Zipkin Server:

    cd zipkin-server
    ./mvnw spring-boot:run
  4. 启动各个微服务:

    cd user-service
    ./mvnw spring-boot:run
    
    cd product-service
    ./mvnw spring-boot:run
    
    cd order-service
    ./mvnw spring-boot:run
    
    cd auth-service
    ./mvnw spring-boot:run
    
    cd gateway-service
    ./mvnw spring-boot:run
  5. 测试 API:

    • 使用 Postman 或 curl 测试各个服务的 API。
    • 访问 http://localhost:8080/users 查看用户列表。
    • 访问 http://localhost:8080/products 查看商品列表。
    • 访问 http://localhost:8080/orders 查看订单列表。
6. 总结

通过上述步骤,我们构建了一个完整的在线购物系统,涵盖了用户管理、商品管理、订单管理、认证和授权、配置管理、服务发现、API 网关、链路追踪等各个方面。这个项目不仅展示了如何使用 Spring Boot 和 Spring Cloud 构建微服务,还展示了如何管理和维护一个复杂的微服务架构。

希望这个综合性的案例能够帮助你更好地理解和应用 Spring Boot 和 Spring Cloud 构建微服务架构。


原文地址:https://blog.csdn.net/speaking_me/article/details/143918281

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!