# microservice4study **Repository Path**: null_465_7266/microservice4study ## Basic Information - **Project Name**: microservice4study - **Description**: 一个最简单的微服务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-05-24 - **Last Updated**: 2026-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java微服务学习项目 这是一个用于学习微服务架构的最小化实现项目,包含了微服务的核心组件。 ## 项目架构 ``` microservice-demo/ ├── eureka-server/ # 服务注册与发现中心 ├── api-gateway/ # API网关 ├── user-service/ # 用户服务 ├── order-service/ # 订单服务 └── pom.xml # 父项目配置 ``` ## 技术栈 - **Spring Boot 2.7.14** - 微服务框架 - **Spring Cloud 2021.0.8** - 微服务生态 - **Netflix Eureka** - 服务注册与发现 - **Spring Cloud Gateway** - API网关 - **OpenFeign** - 服务间通信 - **H2 Database** - 内存数据库 - **Spring Data JPA** - 数据访问层 ## 服务端口 | 服务 | 端口 | 描述 | |------|------|------| | Eureka Server | 8761 | 服务注册中心 | | API Gateway | 8080 | API网关 | | User Service | 8081 | 用户服务 | | Order Service | 8082 | 订单服务 | ## 快速启动 ### 前提条件 - JDK 11 或更高版本 - Maven 3.6 或更高版本 ### 启动步骤 1. **编译项目** ```bash mvn clean compile ``` 2. **启动服务注册中心** ```bash cd eureka-server mvn spring-boot:run ``` 访问: http://localhost:8761 3. **启动用户服务** ```bash cd user-service mvn spring-boot:run ``` 4. **启动订单服务** ```bash cd order-service mvn spring-boot:run ``` 5. **启动API网关** ```bash cd api-gateway mvn spring-boot:run ``` ## API测试 ### 用户服务API ```bash # 创建用户 curl -X POST http://localhost:8080/api/users \ -H "Content-Type: application/json" \ -d '{"name":"张三","email":"zhangsan@example.com","phone":"13800138000"}' # 获取所有用户 curl http://localhost:8080/api/users # 获取指定用户 curl http://localhost:8080/api/users/1 ``` ### 订单服务API ```bash # 创建订单(需要先创建用户) curl -X POST http://localhost:8080/api/orders \ -H "Content-Type: application/json" \ -d '{"userId":1,"productName":"笔记本电脑","quantity":1,"price":5999.99}' # 获取所有订单 curl http://localhost:8080/api/orders # 获取用户的订单 curl http://localhost:8080/api/orders/user/1 # 更新订单状态 curl -X PATCH "http://localhost:8080/api/orders/1/status?status=COMPLETED" ``` ## 监控和管理 - **Eureka控制台**: http://localhost:8761 - **用户服务健康检查**: http://localhost:8081/actuator/health - **订单服务健康检查**: http://localhost:8082/actuator/health - **H2数据库控制台**: - 用户服务: http://localhost:8081/h2-console - 订单服务: http://localhost:8082/h2-console ## 核心特性 ### 1. 服务注册与发现 - 使用Eureka Server作为服务注册中心 - 各微服务自动注册到Eureka - 支持服务健康检查 ### 2. API网关 - 统一入口点 - 路由转发 - 负载均衡 ### 3. 服务间通信 - 使用OpenFeign进行声明式服务调用 - 订单服务调用用户服务验证用户信息 ### 4. 数据持久化 - 使用H2内存数据库 - Spring Data JPA简化数据访问 - 支持数据库控制台查看数据 ## 学习要点 1. **微服务拆分**: 按业务领域拆分为用户服务和订单服务 2. **服务治理**: 服务注册、发现、健康检查 3. **API网关**: 统一入口、路由管理 4. **服务通信**: 同步调用(Feign) 5. **配置管理**: 各服务独立配置 6. **数据管理**: 每个服务独立数据库 ## 扩展建议 - 添加配置中心(Spring Cloud Config) - 集成链路追踪(Sleuth + Zipkin) - 添加熔断器(Hystrix/Resilience4j) - 集成消息队列(RabbitMQ/Kafka) - 添加安全认证(Spring Security + JWT) - 容器化部署(Docker + Kubernetes) ## 故障排除 1. **服务无法注册到Eureka** - 检查Eureka Server是否启动 - 确认配置文件中的eureka.client.service-url.defaultZone正确 2. **服务间调用失败** - 确认被调用服务已注册到Eureka - 检查Feign客户端配置 3. **数据库连接问题** - H2是内存数据库,重启服务数据会丢失 - 检查H2控制台连接参数 ## 许可证 本项目仅用于学习目的,采用MIT许可证。