幂等处理器

本文介绍了幂等性的概念及其在接口设计中的应用,重点讲解了如何通过能力声明化方式快速添加幂等保护,包括两种策略、数据模型设计(如使用InnoDB引擎的表结构)以及状态流转的实现,强调了利用db行锁和乐观锁保证一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概览

        幂等是一个很重要概念,往往和重试联系在一起。当某个请求重试时候,为了规避之前执行成功的操作,需要加上幂等判断。

        该组件的目标是:

                1.基于“能力声明化”的方式,为接口快速添加幂等保护

                2.支持常见的两种幂等保护策略

                     a.直接返回上次的执行结果;

                     b.抛出异常告知重复提交。

二、组件设计

1.流程设计

2.数据模型

CREATE TABLE `idempotent_execution_record` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `type` int(11) NOT NULL,
   `unique_key` varchar(64) NOT NULL,
   `status` int(11) NOT NULL,
   `result` varchar(1024) DEFAULT NULL,
   `create_date` datetime DEFAULT NULL,
   `update_date` datetime DEFAULT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `unq_type_key` (`type`,`unique_key`)
) ENGINE=InnoDB;

3.状态流转

幂等记录状态流转的一致性可以基于db行锁实现,

如并发初始创建记录,插入成功只有一个进程。

如并发修改状态,根据乐观锁基于原来状态更新(ABA问题可以不考虑)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值