09.15练习 构建完整的后端服务

分类: 后端集成 Java Spring Boot OpenTelemetry

练习:构建完整的后端服务

欢迎回到第 9 章的学习。在上一节,我们学习了性能优化。现在我们要进行一个完整的练习,构建完整的后端服务,整合前面学习的所有知识。

本节将学习:用户服务、商品服务、订单服务、支付服务、以及完整的微服务追踪。

用户服务

用户服务的功能有哪些呢? 用户注册、用户登录、查询用户信息、更新用户信息。

如何实现? 创建用户服务项目,添加 OpenTelemetry 依赖和配置,实现 UserController、UserService、UserRepository,集成 OpenTelemetry 追踪。

集成要点: HTTP 请求自动追踪、数据库查询自动追踪、使用 MDC 添加上下文、记录用户相关指标。

商品服务

商品服务的功能有哪些呢? 商品查询、商品搜索、商品分类、商品详情。

如何实现? 创建商品服务项目,添加 OpenTelemetry 依赖和配置,实现 ProductController、ProductService、ProductRepository,集成 OpenTelemetry 追踪。

集成要点: HTTP 请求自动追踪、数据库查询自动追踪、使用手动插桩添加业务 Span、记录商品相关指标。

订单服务

订单服务的功能有哪些呢? 创建订单、查询订单、更新订单状态、订单列表。

如何实现? 使用之前创建的订单服务,添加调用用户服务和商品服务的代码,使用 Feign Client 或 RestTemplate 调用其他服务,测试跨服务调用。

集成要点: 使用 Feign Client 或 RestTemplate 调用其他服务,OpenTelemetry 自动传播追踪上下文,查看跨服务的追踪链路。

支付服务

支付服务的功能有哪些呢? 支付处理、支付查询、退款处理、支付状态查询。

如何实现? 创建支付服务项目,添加 OpenTelemetry 依赖和配置,实现 PaymentController、PaymentService、PaymentRepository,集成 OpenTelemetry 追踪。

集成要点: HTTP 请求自动追踪、使用手动插桩添加业务 Span、记录支付相关指标、使用 MDC 添加上下文。

完整的微服务追踪

完整微服务追踪的价值是什么? 通过完整的追踪链路,可以看到请求经过的所有服务,理解服务间的调用关系,识别性能瓶颈,定位问题。

追踪流程: 客户端发送创建订单请求 → 订单服务接收请求 → 订单服务调用用户服务查询用户信息 → 订单服务调用商品服务查询商品信息 → 订单服务创建订单 → 订单服务调用支付服务处理支付 → 返回订单创建结果,所有服务调用都被追踪。

如何查看完整链路? 启动所有服务,发送请求,在 Grafana Tempo 中查找 Trace,查看完整的 Span 树,点击每个 Span 查看详细信息,在 Loki 中使用 Trace ID 查询日志,在 Prometheus 中查看指标。

测试命令:

# Start all services
# terminus1:User services
cd user-service && mvn spring-boot:run

# terminus2:Product service
cd product-service && mvn spring-boot:run

# terminus3:Order service
cd order-service && mvn spring-boot:run

# terminus4:Payment services
cd payment-service && mvn spring-boot:run

# Send a request to create an order
curl -X POST http://localhost:8080/api/orders \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "user-123",
    "productId": "product-456",
    "quantity": 2,
    "amount": 199.99
  }'

# in Grafana Tempo Search in Trace
# Using Queries:{service_name="order-service"} or {traceId="..."}

Grafana 查询示例:

  • Tempo 查询:
    {service_name="order-service"}
    {traceId="abc123..."}
  • Loki 查询:
    {job="order-service"} |= "traceId=abc123..."
  • Prometheus 查询:
    orders_created_total
    rate(orders_created_total[5m])

本节小结

在本节中,我们完成了练习:构建完整的后端服务:

第一个是用户服务。 用户注册、登录、查询,集成 OpenTelemetry 追踪。

第二个是商品服务。 商品查询、搜索、分类,集成 OpenTelemetry 追踪。

第三个是订单服务。 创建订单、查询、更新,调用其他服务,跨服务追踪。

第四个是支付服务。 支付处理、查询、退款,集成 OpenTelemetry 追踪。

第五个是完整的微服务追踪。 通过完整的追踪链路,可以看到请求经过的所有服务,关联日志、追踪和指标,实现完整的可观察性。

后端服务构建流程: 创建服务项目 → 添加 OpenTelemetry 依赖和配置 → 实现各个层次 → 集成追踪 → 测试功能 → 查看追踪数据 → 完整的微服务可观察性。

这就是练习:构建完整的后端服务。通过这个练习,我们整合了所有前面学习的知识,实现了完整的微服务可观察性。

恭喜你完成了第 9 章的学习!在下一章,我们将学习前端集成:React + OpenTelemetry。学习如何在前端应用中集成 OpenTelemetry。