A和B接口同时修改table字段,无法确认调用顺序

简介: 先描述下问题原因,我先文字描述,再画了个流程图。

欢迎订阅关注公众号:赵KK日常技术记录
先描述下问题原因,我先文字描述,再画了个流程图。

描述

AB两个接口更新同一个表的字段,但是以B接口下发数据为准,上游调用A接口的同时调用C接口,C接口再同时调用B接口,理论情况下更新时间是按着A先插入了tabel的字段,B再进行更新,最终数据是以B接口下发数据为准的,但由于A接口下发业务逻辑复杂,导致短时间A接口未提交事务时B接口被调用就进行了更新并提交事务导致A接口的事务提交覆盖了B操作,但更可怕的就是A还未提交事务,表中无数据可更新,B无法更新的情况如何更新数据?目前方案在B接口调用时放入缓存数据,在A接口被调用时缓存中有数据则更新缓存中的数据,没有则表明此时B还未被调用则不更新,常规的发生异常或者B后提交事务可以解决,但是A未提交事务时,B无法更新的情况如何处理?
image.png
然后说下场景:order服务统一下发数据,异步调用RPCa和RPCc,order服务不关心AC是否调用成功,A调用失败也不会回滚C,C同理。A插入数据,B根据条件更新table中的某些数据。

问题

A事务还未提交时,B被调用,B无法更新数据

A下发数据异常导致B无法更新数据

在什么节点下删除缓存

是分布式事务吗?

当然不是,AC被调用就是线程隔离的,并且其中一个事务回滚不影响另一个事务。

思路

A就不需要insert所需数据,调整字段类型为null,当B被调用时更新。但是既然无法保证调用顺序,作废

是否能够保证B永远在A被调用后执行?不能

在B被调用就放入缓存,然后Ainsert的时候取缓存的值,缓存有数据ok,没数据不更新,在A insert提交事务后再次触发判断缓存是否有数据,有更新,无的话就说明B还未被调用,B正常去更新就好了,这样只要B成功调用不管是否更新,A被调用时提交事务前后都能更新数据,如果A提交了事务缓存都没值,B也能顺利更新,即便A事务发生回滚再次被调用时也会更新成正确数据。代码比较简单就不上了。

4.能不能当B被调用时先查询是否有数据,没有的话先阻塞,等A提交事务后再被唤醒?可能不行,因为接口肯定调用就超时了。

5.删除缓存节点的话,等业务流程关闭的时候进行删除就可以了。
目录
相关文章
|
5月前
|
存储 人工智能 安全
阿里云双项入选首批智算一体化权威评估 以AI Stack加速政企智能化升级 ——万卡智算集群服务推进方阵(ICCPA)第三期沙龙在京举办
2024年4月9日,中国信通院主办的智算集群服务沙龙第三期在京召开。阿里云凭借领先的AI技术能力,成为首批通过《面向大模型的智算一体化解决方案》评估的云厂商,并入选行业应用案例。会上,阿里云AI Stack赋能政企大模型高效落地,提供软硬一体推理优化框架,支持主流开源模型快速适配,助力企业构建高性能私有化AI服务,已在政务、金融等领域广泛应用。
288 6
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能革命:现状与未来展望
【10月更文挑战第2天】 本文深入探讨了人工智能在软件测试领域的应用现状、面临的挑战以及未来的发展方向。通过分析AI技术如何提高测试效率、准确性和自动化水平,文章揭示了AI在改变传统软件测试模式中的关键作用。同时,指出了当前AI测试工具的局限性,并对未来AI与软件测试深度融合的前景进行了展望,强调了技术创新对于提升软件质量的重要性。
343 4
|
11月前
|
机器学习/深度学习 人工智能 算法
AI技术在医疗领域的应用及挑战
【10月更文挑战第4天】本文将探讨AI技术在医疗领域的应用及其面临的挑战。我们将从AI技术的定义和发展历程入手,分析其在医疗领域的应用场景,包括辅助诊断、个性化治疗、药物研发等方面。同时,我们也将讨论AI技术在医疗领域面临的挑战,如数据隐私、算法偏见等问题。最后,我们将以一个简单的代码示例来展示AI技术在医疗领域的应用。
255 0
|
6月前
|
人工智能 弹性计算 自然语言处理
云工开物学习推荐 | 轻松部署满血版DeepSeek,来阿里云搭建专属大模型主页
阿里云推出高效、易用的个人AI大模型部署方案,5分钟快速搭建专属AI主页。支持70+主流模型无缝切换对比,满足多样化需求;提供灵活扩展能力,解锁无限可能;高度定制化设计,打造个性化智能品牌。两种套餐任选:热卖套餐99元/年,尝鲜套餐0.3元/小时。专属大模型主页等你创建!
|
10月前
|
人工智能 缓存 并行计算
【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,解释了算力计算方法、数据加载与计算的平衡点,以及如何通过算力敏感度分析优化性能瓶颈。同时,文章还讨论了服务器、GPU和超级计算机等不同计算平台的性能发展趋势,强调了优化数据传输速率和加载策略的重要性。
382 4
|
10月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
197 1
|
11月前
|
Java C++
【多线程】JUC的常见类,Callable接口,ReentranLock,Semaphore,CountDownLatch
【多线程】JUC的常见类,Callable接口,ReentranLock,Semaphore,CountDownLatch
99 0
|
11月前
|
网络协议 CDN
阿里云国际版CDN加速,如何判断网站IP已加速?
阿里云国际版CDN加速,如何判断网站IP已加速?
|
安全 关系型数据库 MySQL
揭秘:如何在无影的Serverless世界中,悄无声息地操控MySQL数据库!
【8月更文挑战第8天】在云计算领域,Serverless 枟能凭借其高效与弹性特性脱颖而出。本文采用问答形式解析函数计算环境中 MySQL 数据库的安全高效访问方法。介绍了如何利用数据库插件或 SDK 连接 MySQL,并提供了一个使用 Python 和 `pymysql` 在阿里云函数计算中连接 MySQL 的示例代码片段。同时强调了通过环境变量或密钥管理服务安全处理数据库凭证的重要性。随着 Serverless 技术的发展,数据库操作将更加简便。
181 7
|
人工智能 API
谷歌SIMA:一种适用于 3D 虚拟环境的通用 AI 智能体
【2月更文挑战第24天】谷歌SIMA:一种适用于 3D 虚拟环境的通用 AI 智能体
325 1
谷歌SIMA:一种适用于 3D 虚拟环境的通用 AI 智能体