mysql事务保证幂等_使用数据库唯一键实现事务幂等性

本文介绍了幂等性在分布式系统中的重要性,特别是在需要重试的场景下。通过详细分析,强调了数据库事务幂等性的必要性,并提供了利用MySQL本地事务和唯一键来保证幂等性的技术实现。在并发情况下,唯一键还能充当分布式锁的角色。最后,文章探讨了分布式事务的幂等性设计,并提出了一种简单但可能产生少量多余调用的解决方案。
摘要由CSDN通过智能技术生成

2ff34e647e2e3cdfd8dca593e17d9b0a.png

幂等性

概念

在分布式系统中,幂等性是一致性方面的一个重要概念。幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。

在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。

所谓“影响相同”,不是要求返回值完全相同,而且是指后续多余的调用对系统的数据一致性不造成破坏。对于写入类操作,如果第一次写入是成功的,后续的写入应该抛出异常或者空操作,或者执行了写入但是未对数据造成变化。对于读取类操作,需要保证其实现上是真正的读取,不能在读操作中夹带写操作。

场景

需要实现幂等性的典型场景有以下两种:客户端发起的请求可能需要重试,请求的后端处理需要保证幂等

后端系统使用同步RPC调用或异步消息实现分布式事务,消息的消费者需要保证幂等

必要性

重试是降低系统失败率的重要手段。

广义上的RPC,包括客户端对服务端的api调用、后端系统的内网调用、跨机房调用等。一次RPC大体上包括三个步骤:发送请求、执行过程、接收响应。由于网络传输存在不确定性,导致RPC调用存在一个陷阱,即有可能出现第一、第二步都成功、第三步失败的情况,此时RPC的调用方由于接收不到结果,无法判断被调用方是否已经完成过程调用,只能按失败处理。

通常RPC调用方会针对网络失败进行重试。在上述情况下,如果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值