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

文章目录

  • 一,282-商城业务-订单服务-提交订单的问题
    • 调试过程中出现的问题
    • services面板介绍
      • 什么是 Services Panel?
      • 主要作用
      • 解决的痛点
      • 使用方法
  • 二,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. 用户服务扣减积分:订单服务请求用户服务扣减积分。

事务保证

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/411644.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

福建聚鼎:装饰画做起来一家店铺需要多久

在如今快节奏、高效率的社会环境中,许多人追求即时满足,希望所有事情都能迅速完成。然而,在艺术的世界里,时间往往是一个被精心雕琢的概念。今天,让我们来探讨一下,如果从零开始做起来一家装饰画店铺&#…

解决Selenium元素拖拽不生效Bug

前几天在使用Selenium进行元素拖拽操作时,发现Selenium自带的元素拖拽方法(dragAndDrop())不生效,网上的回答也是五花八门,比较混乱,尝试了以下几种方法均无法解决。 方案1:通过dragAndDrop()方…

Nucleus创建LocalServer后没有localhost

1.问题 在Omniverse平台上使用Nucleus模块时,需要本地创建一个Server,然后安装。安装完成后如下图所示。 会发现在Omniverse下是空的,没有localhost,需要点击Add Server,弹出如下所示。 然后输入创建之前的用户名和密码…

51单片机串口通信

一.通信 1.通信认识 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指单片机与外部设备(传感器)或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种方式。在多微机系统以及现代…

工作中常用的100个知识点

1. Permission deniedGit解决Permission denied, please try again问题_git permission denied, please try again.-CSDN博客 cd ~/.ssh/ 回车,进入.ssh路径下; 接下来在.ssh路径下配置全局的name和email,输入以下命令: git con…

sql-labs41-45关通关攻略

第41关 一.查询数据库 http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,database()--http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,database()-- 二.查表 http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,(select%20group_concat(table_name)…

青岛实训day33(8/21)

1、配置一主二从mysql 1. mycat对mysql8不完全支持 2. mysql8主从问题不大get_pub_key1 3. gtids事务复制 4. 删除/etc/my.cnf 5. 同步data文件需要先停用mysql服务,删除data目录中的auto.cnf 6. gtid模式以及经典模式都需要锁表 flush tables with read lock;unlock tables;…

想学gis开发,java和c++哪个比较好?

java与C的应用场景不同,究竟选择谁,应该由开发者的兴趣方向来决定。 你选择Java,意味着以后的业务方向就是偏后台服务开发,如果你非得说我用java也可以写界面,对不起,别人不会。不管是从项目还是产品的角度…

【Redis】Redis 的消息队列 List、Streams—(六)

目录 一、消息队列二、List 方案三、Streams 方案 一、消息队列 我们一般把消息队列中发送消息的组件称为生产者,把接收消息的组件称为消费者,下图是一个通用的消息队列的架构模型: 消息队列在存取消息时,必须要满足三个需求&…

超详细超实用!!!java开发之IntelliJ IDEA下载与安装破解以及汉化教程(三)

云风网 云风笔记 云风知识库 一、安装包下载 1、官网下载 2、ideaIU-2024.2.0.2.exe 百度网盘资源 安装包下载完成后进行傻瓜式下一步安装就可以了 二、破解激活 由于IntelliJ IDEA可免费一个月,后续需要付费购买激活码,这里采用破解激活的方式 将…

从零上手CV竞赛Task2 # Datawhale AI夏令营

文章目录 平台参赛平台云平台 Task 1 从零上手CV竞赛下载baseline相关文件一键运行baseline!(大约需要25分钟)赛题解析数据集提交结果违法标准注意事项 下载生成的文件结果如图最后要记得关机 不然一直消耗算力 Task 2 建模方案解读与进阶物体…

从 0 到 1 的Prompt 教程,来自Claude 官方,不会写 prompt的看这个足够

Claude 的强大,最近得到了很多网友的验证,甚至效果上面大有超越 GPT的许多声音。 所以从优秀的 Claude 中学习,将会是一个很好的起点。 这里,Claude 的开发者们提供了一个相当详细的 Prompt Engineering 教程。 这个教程能够全面…

若依后端 MyBatis改为MyBatis-Plus

引用 1.引入MyBatis-Plus依赖 在总目录的pom.xml&#xff0c;导入依赖 <mybatis-plus.version>3.4.3</mybatis-plus.version> <!-- mybatis-plus 增强CRUD --> <dependency> <groupId>com.baomidou</groupId> <artifactId>…

计算机毕业设计选题推荐-医院门诊预约-医院预约挂号微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Unity(2022.3.41LTS) - 着色器

目录 一、着色器的基本概念 二、表面着色器 一、着色器的基本概念 定义与作用&#xff1a; 着色器是一种在图形硬件上运行的程序&#xff0c;用于控制物体的颜色、纹理、光照、透明度等视觉属性。它通过对输入的几何数据&#xff08;如顶点位置、法线、纹理坐标等&#xff09…

项目:基于TCP的文件传输系统

项目介绍: 模拟FTP原理&#xff1a;客户端连接服务器后&#xff0c;向服务器发送一个文件。文件名可以通过参数指定&#xff0c;服务器端接收客户端传来的文件&#xff08;文件名随意&#xff09;&#xff0c;如果文件不存在自动创建文件&#xff0c;如果文件存在&#xff0c;…

代码随想录Day 23|回溯Part02,39.组合总和、40.组合总和Ⅱ、131.分割回文串

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 第七章 回溯算法part03一、题目题目一&#xff1a; 39. 组合总和解题思路&#xff1a;回溯三部曲剪枝优化小结&#xff1a; 题目二&#xff1a;40.组合总和Ⅱ解题思路&#xff1a;回溯三部曲 题目…

【项目源码】终于有人将打字游戏和编程英语结合起来啦!编程初学者的福音

Hello&#xff01;各位彦祖&#xff0c;亦菲们&#xff01;又是美好的一天&#xff01;今天给大家分享一个Java项目源码&#xff1a;Java打字游戏项目源码&#xff01; 看到这里&#xff0c;你可能会说&#xff01; 一个破打字游戏有什么可神气的&#xff01;&#xff01;&…

Leetcode面试经典150题-28.找出字符串第一个匹配项的下标

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;比第一题稍微难点 用KMP解这个题简直就像大炮打蚂蚁&#xff0c;但是没办法&#xff0c;现在都是这么卷 package dataStructure.bigFactory;public class _28Strstr {public static int strStr(String s1, String s…

springboot3.x入门系列【5】支持unix sock 套接字服务

目录 一、简介 二、springBoot3.x 套接字的支持 1. 环境要求 2. springboot内置tomcat 2.1 支持unix 设置 unixDomainSocketPath 2.2 windows 下unix服务测试 3. springboot外置tomcat 3.1 tomcat 配置unix socket 套接字 3.2 启动tomcat 服务 3.3 nginx 支持unix…