# cloud-demo **Repository Path**: junjun_com/cloud-demo ## Basic Information - **Project Name**: cloud-demo - **Description**: 快速通关SpringCloud,内容涵盖:分布式基础概念、Nacos注册中心与配置中心、OpenFeign远程调用、Sentinel流量保护、Gateway网关、Seata分布式事务等。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-26 - **Last Updated**: 2025-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, SpringCloud ## README # Gitee 项目 README ## 项目简介 本项目是一个基于微服务架构的分布式系统,主要用于演示订单、产品、账户和库存服务之间的交互。系统使用了 Spring Boot、Spring Cloud 以及 Seata 来处理分布式事务,同时集成了 Nacos 作为服务注册与配置中心,Feign 用于服务间通信,Sentinel 用于流量控制与熔断降级。 该项目适用于想要学习或演示微服务架构及其相关技术栈的开发者。 ## 技术栈 - Spring Boot - Spring Cloud - Seata(分布式事务) - Nacos(服务发现与配置管理) - Feign(服务通信) - Sentinel(流量控制与熔断) - MyBatis(数据访问) - Redis(缓存) ## 主要模块 - **gateway**: 提供微服务网关,包含自定义的过滤器和路由规则。 - **model**: 包含公共类(如 `R` 通用返回类)及业务模型(如 `Order`, `Product`)。 - **services/seata-account**: 处理账户余额相关业务逻辑。 - **services/seata-business**: 购买流程的业务逻辑,使用 Seata 实现分布式事务。 - **services/seata-order**: 处理订单创建逻辑,集成 Sentinel 和 Feign。 - **services/seata-storage**: 处理库存扣除逻辑。 - **services/service-order**: 订单服务,集成 Feign、Sentinel、Redis。 - **services/service-product**: 产品服务,提供产品信息的获取。 ## 安装与启动 ### 前提条件 - Java 1.8 或以上 - Maven - Nacos Server - Seata Server - Redis Server(可选) ### 启动步骤 1. **启动 Nacos Server** 确保 Nacos 已经启动,并创建相应配置。 2. **启动 Seata Server** 配置好 file.conf 与 registry.conf,启动 Seata 服务。 3. **启动各微服务模块** - `services/seata-account`: 启动账户服务 - `services/seata-order`: 启动订单服务 - `services/seata-storage`: 启动库存服务 - `services/seata-business`: 启动购买业务服务 - `services/service-product`: 启动产品服务 - `gateway`: 启动网关服务 4. **访问服务** - 通过网关访问各服务的 REST 接口。 ## 使用示例 - **创建订单** 发送 GET 请求到:`http://localhost:8080/purchase?userId=xxx&commodityCode=xxx&count=xxx` 该请求会触发分布式事务,扣除库存、下单、扣款。 - **查看订单信息** 发送 GET 请求到:`http://localhost:8080/order/create?userId=xxx&productId=xxx` - **测试限流与降级** 使用 Sentinel 控制 `/seckill` 接口的限流策略,测试降级逻辑。 ## 贡献指南 欢迎提交 Pull Request 来改进项目。请确保: - 代码风格与现有代码一致 - 新功能有相应的测试 - 提交前运行测试并确保通过 ## 协议 本项目基于 MIT License,详情请参考 LICENSE 文件。 ## 联系方式 如需反馈问题或提出建议,请提交 Issue 或联系项目维护人员。