说说分布式事务

简介:

分布式事务

分布式事务说的就是一个事务的两个或者多个操作不是在一个数据库中进行的,而是在多个数据库中执行。
这个时候,如何保证事务操作的原子性和一致性?

举个支付的例子,支付进行买东西。事务由两个行为组成,我的购买商品数据表数据+1,支付金额表数据-1。
如果这两个都是在同一库中,没啥问题。

try {
    事务开始
    购买商品数据表数据+1
    支付金额表数据-1
    事务结束
} catch 事务失败 {
    事务回滚
}

但是这两个表是在两个库中,那么就用到二阶段提交了

二阶段提交

二阶段提交(2PC)增加了事务处理器和事务执行者的角色。由事务处理器来进行整个事务的处理。主要流程如下面的图

两阶段提交协议

prepare

当开始事务调用的时候,事务处理器向事务执行者(有可能是数据库本身支持)发出命令,事务执行者进行prepare操作。

当所有事务执行者都完成了prepare操作,就进行下一步行为。

如果有一个事务执行者在执行prepare的时候失败了,那么通知事务处理器,事务处理器再通知所有的事务执行者执行回滚操作。

commit

当所有事务执行者都prepare成功以后,事务处理器会再次发送commit请求给事务执行者,所有事务执行者进行commit处理。

当所有commit处理都成功了,那么事务执行结束。

如果有一个事务执行者的commit处理不成功,这个时候就要通知事务处理器,事务处理器通知所有的事务执行者执行回滚(abort)操作。

但是两阶段提交的诟病就是在于性能问题。比如由于执行链比较长,锁定资源的时间也变长了。所以在高性能的系统中都会避免使用二阶段提交。

使用消息系统避免分布式事务

这种方法是文章如何用消息系统避免分布式事务?中提到的方法。

首先这种方法必须在产品上有所妥协。比如支付过程,在支付操作之后,并不是立即返回告知用户你是否成功,并且扣除金额(当然如果消息队列通畅的情况下看起来是立即返回的)。

而是在支付的过程中,先恭喜你获取物品成功,然后获取物品成功后通知消息队列,由消息队列再进行扣除金额的操作。

当然消息队列有可能操作失败,操作失败以后由于有凭证,可以进行重试操作。

最终支付成功后,再进行消息确认,从而保证消息一致性。

目录
相关文章
|
6月前
|
人工智能 边缘计算 自然语言处理
DistilQwen2.5-R1:蒸馏黑科技!32B推理能力塞进3B小模型,推理速度狂飙300%
阿里巴巴最新发布的DistilQwen2.5-R1系列模型通过知识蒸馏技术,在保持高性能的同时大幅降低计算资源需求,7B模型性能甚至可媲美32B大模型。
225 11
DistilQwen2.5-R1:蒸馏黑科技!32B推理能力塞进3B小模型,推理速度狂飙300%
|
6月前
|
API 网络架构
WordPress定时发布插件
这是一款用于WordPress的定时发布插件,可将后台、REST API及草稿箱中的文章按设定时间自动发布,避免文章立即上线。支持指定或随机延迟发布,以及周期性发布草稿箱内容。插件依赖WordPress计划任务功能,确保稳定运行。附产品截图展示设置界面。
135 10
|
存储 JSON 安全
从入门到精通:Python中的OAuth与JWT,打造无懈可击的认证体系🔒
【8月更文挑战第4天】构建现代Web和移动应用时,用户认证与授权至关重要。Python集成OAuth和JWT技术,能轻松实现安全认证。本文从OAuth基础入手,介绍如何使用`requests-oauthlib`库简化流程,再到JWT进阶应用,利用`PyJWT`库生成及验证令牌。最后,探讨如何结合两者,创建无缝认证体验。通过代码示例,由浅入深地引导读者掌握构建坚固应用认证体系的方法。
312 2
|
10月前
|
量子技术
量子计算与教育:培养下一代量子科学家
在21世纪科技浪潮中,量子计算正从理论走向实践,深刻影响科学研究、工业制造、信息安全等领域。本文探讨量子计算与教育的结合,旨在培养具备量子思维和创新能力的下一代科学家,为未来科技创新奠定基础。通过课程革新、跨学科教育、实践平台搭建及国际化视野培养等策略,激发学生兴趣,提供丰富教育资源,强化实践与团队协作,推动量子科学的发展。
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,涵盖AI系统的初步设计原则,并深入探讨了AI在计算机视觉、自然语言处理和音频处理三个领域的具体应用。同时,文中还介绍了AI在金融、医疗、教育、互联网及自动驾驶等行业中的广泛应用,强调了AI基础设施的重要性及其对企业竞争力的影响。通过阅读本文,读者不仅可以获得系统的AI知识,还能激发对AI系统研究的兴趣,掌握相关的设计原则与方法。
465 1
|
11月前
|
运维 Kubernetes 负载均衡
Kubernetes有哪些优势
【10月更文挑战第18天】Kubernetes有哪些优势
350 1
|
canal 消息中间件 缓存
面试题:如何解决缓存和数据库的一致性问题?
面试题:如何解决缓存和数据库的一致性问题?
318 1
|
物联网 智能硬件
物联卡选择指南
本物联卡选择指南助您根据设备类型与数量、流量需求来明确需求;了解普通物联网卡、物联网语音卡、NB-IoT卡及陶瓷卡等种类及其适用范围;考虑网络覆盖和服务质量以确保性能;对比套餐价格并控制成本;评估客户服务和售后保障;关注兼容性、安装方式及实名认证等特性,最终选出符合需求且性价比高的物联卡。
|
机器学习/深度学习 数据采集 人工智能
探索软件测试中的AI辅助技术:未来趋势与挑战
【5月更文挑战第27天】 随着人工智能(AI)的迅速发展,其在软件测试领域的应用正逐步改变传统测试方法,提升测试效率和质量。本文将深入分析AI在软件测试中的应用现状,探讨其如何通过智能化的模式识别、预测分析和自适应学习机制优化测试流程。同时,文章还将讨论引入AI所面临的挑战,包括数据质量、模型泛化能力和解释性问题。最后,对未来AI辅助软件测试的潜在发展趋势进行展望。
|
机器学习/深度学习 存储 自然语言处理
XoT:一种新的大语言模型的提示技术
这是微软在11月最新发布的一篇论文,题为“Everything of Thoughts: Defying the Law of Penrose Triangle for Thought Generation”,介绍了一种名为XOT的提示技术,它增强了像GPT-3和GPT-4这样的大型语言模型(llm)解决复杂问题的潜力。
498 6

热门文章

最新文章