谷粒商城实战笔记-282~283-商城业务-订单服务-提交订单的问题

一,282-商城业务-订单服务-提交订单的问题

这一节的主要内容是测试正常情况下的订单提交流程是否顺畅。

调试过程中出现的问题

  • 出现异常后,因为没有分布式事务,导致库存占用无法回滚,调试几次,库存就不够了,可以把库存调到很大
  • 没有开启网关服务,导致nginx请求失败

services面板介绍

什么是 Services Panel?

Services Panel 是 IntelliJ IDEA 提供的一个功能模块,旨在帮助开发者更好地管理和监控应用程序中的服务组件。它位于 IDE 的右侧面板中,可以方便地访问一系列与项目相关的服务和工具。

主要作用

  1. 统一管理工具和服务

    • Services Panel 将多种工具和服务整合在一起,包括构建工具、版本控制系统、测试框架等,使得开发者可以在一个地方管理所有这些工具。
  2. 提高开发效率

    • 通过将常用的工具和服务集中在一个面板上,开发者可以更快地访问和使用它们,从而提高工作效率。
  3. 简化调试过程

    • Services Panel 提供了丰富的调试工具,比如查看日志文件、监控应用性能、执行单元测试等,有助于快速定位问题。
  4. 增强协作能力

    • 集成了版本控制工具,便于团队成员之间的代码共享和协作。
  5. 扩展性

    • 支持插件扩展,可以根据项目需求添加更多的服务和工具。

解决的痛点

  • 快速访问项目服务:无需在不同的窗口或工具之间切换,所有的服务都可以在一个面板上访问,大大节省了时间。

  • 简化项目配置:自动检测和配置项目依赖和服务,减少手动配置的时间和错误。

  • 提升调试体验:提供强大的调试工具,如断点、步进执行等功能,帮助开发者快速解决问题。

  • 团队协作更加顺畅:集成版本控制系统,方便进行代码审查、合并分支等操作,增强了团队间的协作。

使用方法

  1. 打开 Services Panel

    • 在 IntelliJ IDEA 中,可以通过主菜单栏选择 View > Tool Windows > Services 或者直接点击工具栏上的 Services 图标来打开 Services Panel。
  2. 查看可用服务

    • Services Panel 默认显示一些常用的服务,如 Git、Maven、Gradle 等。可以通过面板左侧的树形结构查看和管理这些服务。
  3. 执行操作

    • 可以直接在面板中执行相关操作,比如提交更改、运行构建任务、执行测试等。
  4. 定制面板

    • 可以根据个人喜好和项目需求定制 Services Panel,添加或移除服务,甚至安装额外的插件来扩展面板的功能。
  5. 调试和监控

    • Services Panel 还提供了查看日志文件、监控应用性能等功能,这对于调试和监控应用非常有用。
  6. 团队协作

    • 使用面板中的版本控制工具来管理代码仓库,方便团队成员之间的协作。

二,283-商城业务-分布式事务-本地事务在分布式下的问题

在这里插入图片描述

因为商城是分布式服务,不同的服务操作不同的数据库,而事务只能保证同一个数据库连接的原子性,不能保证多个不同的连接的原子性。

分布式事务问题

  1. 订单服务异常:如果订单服务在处理过程中出现异常,库存锁定将不运行,需要全部回滚,撤销操作。
  2. 库存服务事务自治:如果库存服务在锁定库存时失败,需要全部回滚,订单服务也应继续回滚。
  3. 库存服务锁定成功,但网络原因返回数据途中问题:如果库存服务成功锁定库存,但在返回结果时遇到网络问题,如何处理?
  4. 库存服务锁定成功,但库存服务下面的逻辑发生故障:如果库存服务成功锁定库存,但在后续的逻辑处理中发生故障,订单服务已经回滚,如何处理?

解决方案

  • 利用消息队列实现最终一致性:在库存服务成功锁定库存后,发送消息到消息队列(如当前库存工作单),过一段时间自动解锁。解锁前先查询订单的支付状态,解锁成功后修改库存工作单详情项状态为已解锁。

分布式事务处理流程

  1. 订单服务下订单:订单服务首先发起订单创建请求。
  2. 库存服务锁定库存:订单服务请求库存服务锁定库存。
  3. 用户服务扣减积分:订单服务请求用户服务扣减积分。

事务保证

  • 订单服务异常:如果订单服务在处理过程中出现异常,库存锁定将不运行,需要全部回滚,撤销操作。
  • 库存服务事务自治:如果库存服务在锁定库存时失败,需要全部回滚,订单服务也应继续回滚。
  • 网络问题:如果库存服务成功锁定库存,但在返回结果时遇到网络问题,可以通过消息队列确保最终一致性。
  • 逻辑故障:如果库存服务成功锁定库存,但在后续的逻辑处理中发生故障,订单服务已经回滚,可以通过消息队列和定时任务来处理解锁和状态更新。
  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小手追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值