Java微服务学习项目
https://gitee.com/null_465_7266/microservice4study
这是一个用于学习微服务架构的最小化实现项目,包含了微服务的核心组件。
项目架构
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 或更高版本
启动步骤
- 编译项目
mvn clean compile
- 启动服务注册中心
cd eureka-server
mvn spring-boot:run
访问: http://localhost:8761
- 启动用户服务
cd user-service
mvn spring-boot:run
- 启动订单服务
cd order-service
mvn spring-boot:run
- 启动API网关
cd api-gateway
mvn spring-boot:run
API测试
用户服务API
# 创建用户
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
# 创建订单(需要先创建用户)
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简化数据访问
- 支持数据库控制台查看数据
学习要点
- 微服务拆分: 按业务领域拆分为用户服务和订单服务
- 服务治理: 服务注册、发现、健康检查
- API网关: 统一入口、路由管理
- 服务通信: 同步调用(Feign)
- 配置管理: 各服务独立配置
- 数据管理: 每个服务独立数据库
扩展建议
- 添加配置中心(Spring Cloud Config)
- 集成链路追踪(Sleuth + Zipkin)
- 添加熔断器(Hystrix/Resilience4j)
- 集成消息队列(RabbitMQ/Kafka)
- 添加安全认证(Spring Security + JWT)
- 容器化部署(Docker + Kubernetes)
故障排除
- 服务无法注册到Eureka
- 检查Eureka Server是否启动
- 确认配置文件中的eureka.client.service-url.defaultZone正确
- 服务间调用失败
- 确认被调用服务已注册到Eureka
- 检查Feign客户端配置
- 数据库连接问题
- H2是内存数据库,重启服务数据会丢失
- 检查H2控制台连接参数
许可证
本项目仅用于学习目的,采用MIT许可证。