0
点赞
收藏
分享

微信扫一扫

软件研发 --- 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

  1. 启动服务注册中心

cd eureka-server
mvn spring-boot:run

访问: http://localhost:8761

  1. 启动用户服务

cd user-service
mvn spring-boot:run

  1. 启动订单服务

cd order-service
mvn spring-boot:run

  1. 启动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简化数据访问
  • 支持数据库控制台查看数据

学习要点

  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正确
  1. 服务间调用失败
  • 确认被调用服务已注册到Eureka
  • 检查Feign客户端配置
  1. 数据库连接问题
  • H2是内存数据库,重启服务数据会丢失
  • 检查H2控制台连接参数

许可证

本项目仅用于学习目的,采用MIT许可证。

举报

相关推荐

0 条评论