首页 > 其他分享 >Spring Boot 和 Spring Cloud 构建一个完整的微服务架构——在线购物系统

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

时间:2024-11-22 19:17:14浏览次数:3  
标签:service Spring Boot eureka Cloud 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 构建微服务架构。

标签:service,Spring,Boot,eureka,Cloud,spring,cloud
From: https://blog.csdn.net/speaking_me/article/details/143918281

相关文章

  • 基于SprinBoot+vue的物业管理系统(源码+数据库+文档)
    物业管理系统基于SprinBoot+vue的物业管理系统一、前言二、系统设计三、系统功能设计 系统登录实现后台模块实现管理员模块实现物业管理模块实现业主模块实现维修员模块实现四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获......
  • 基于java+springboot的社区邻里服务平台系统
    基于Java+SpringBoot的社区邻里服务平台系统,充分发挥技术优势构建便捷交流空间。SpringBoot后端有力支撑,妥善存储居民信息,包含姓名、联系方式、居住楼号等,高效管理各类服务板块,如二手物品交易,居民可发布闲置物品详情与期望价格;家政服务对接,展示家政人员信息与服务范......
  • SpringBoot多数据源开发
    前言在企业级开发中,多数据源是一种常见的技术方案。在面对复杂的业务场景时,通常会对数据库进行横向和纵向的拆分。横向拆分如读写分离,通过主从复制的方式减轻主库的读压力;纵向拆分则是按模块拆分数据库,提升单库性能。在SpringBoot项目中,怎么实现多数据源支持?一起通过案例......
  • PbootCMS其它格式化标签
    [list:contentdropblank=1][list:contentdecode=1][list:pricedecimal=2][list:sizeunit=mb][list:visitsoperate=+1000][list:ioperate=%2][list:fieldslfield="title,content"][search:titlemark=1]使用说明:去除空白字符:dropblank=1,去除空白字符,如换行符、制......
  • SAP S/4HANA Cloud模块功能详解:开启企业数字化转型新篇章
    在数字化转型浪潮的推动下,企业纷纷寻求高效、灵活且可扩展的解决方案,以应对日益复杂的市场环境。SAPS/4HANACloud作为SAP公司推出的云端ERP(企业资源规划)解决方案,凭借其强大的功能和云技术的结合,成为了众多企业数字化转型的首选。本文将深入探讨SAPS/4HANACloud的几大核心模块......
  • 【附源码】springboot贫困地区儿童资助系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot 企业人才引进服务平台设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot 校园导航微信小程序设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot 网上订餐系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot 校园跑腿管理系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......