GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

软件研发 --- hello world项目 之 java微服务


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 或更高版本

启动步骤

  1. 编译项目

    mvn clean compile
    
     
  2. 启动服务注册中心

    cd eureka-server
    mvn spring-boot:run
    
     

    访问: http://localhost:8761

  3. 启动用户服务

    cd user-service
    mvn spring-boot:run
    
     
  4. 启动订单服务

    cd order-service
    mvn spring-boot:run
    
     
  5. 启动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"
 

监控和管理

核心特性

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许可证。

posted on 2025-05-26 18:54  GKLBB  阅读(16)  评论(0)    收藏  举报