09.15、练习 构建完整的后端服务
练习:构建完整的后端服务
欢迎回到第 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_totalrate(orders_created_total[5m])
本节小结
在本节中,我们完成了练习:构建完整的后端服务:
第一个是用户服务。 用户注册、登录、查询,集成 OpenTelemetry 追踪。
第二个是商品服务。 商品查询、搜索、分类,集成 OpenTelemetry 追踪。
第三个是订单服务。 创建订单、查询、更新,调用其他服务,跨服务追踪。
第四个是支付服务。 支付处理、查询、退款,集成 OpenTelemetry 追踪。
第五个是完整的微服务追踪。 通过完整的追踪链路,可以看到请求经过的所有服务,关联日志、追踪和指标,实现完整的可观察性。
后端服务构建流程: 创建服务项目 → 添加 OpenTelemetry 依赖和配置 → 实现各个层次 → 集成追踪 → 测试功能 → 查看追踪数据 → 完整的微服务可观察性。
这就是练习:构建完整的后端服务。通过这个练习,我们整合了所有前面学习的知识,实现了完整的微服务可观察性。
恭喜你完成了第 9 章的学习!在下一章,我们将学习前端集成:React + OpenTelemetry。学习如何在前端应用中集成 OpenTelemetry。