SOA 服务化 非幂等操作 处理方法

本文探讨了SOA服务化中非幂等操作的常见场景及处理方法,如重复提交问题的根源(前端按钮未遮罩、HTTP与消息中间件重试机制),并提出了解决方案,包括前端遮罩、服务调用限制、Token令牌机制、CodeID唯一性检查,最终目标是将非幂等操作转换为幂等操作。

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

非幂等操作场景

场景

添加,删除操作前端操作按钮未遮罩造成重复提交

HTTP中间件重试机制造成重复提交

  1. 很多http中间件都有重试机制

消息中间件重试机制造成重复提交

服务调用服务失败重试机制

解决方法

添加,删除操作后前端操作按钮遮罩或者跳转页面

常识。但是不能从根本上解决问题。

HTTP 消息中间件,服务调用最多调用一次设置

Dubbo可以设置重试次数,RocketMq也有设置。

Token令牌一次使用后就失效

比如进入下单界面先生成一个Token,订单提交带Token,后台判断Token是否应使用过,使用过就重复提交。

Code ID唯一性限制重复提交

比如服务调用者生成唯一Code,服务提供者判断Code唯一性,不唯一就返回操作错误。消息也可使用。

最牛把非幂等操作变成幂等操作

这是最牛的,比如删除操作,比较容易做成幂等,更新操作也可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值