分布式系统接口,如何避免表单的重复提交?

使用分布式的好处与坏处

很多时候,我们为了更好的承载更多请求,或者稳定的为更多的用户提供服务,那么我们一般会把服务部署多份。以保证服务的高可用,高并发。

但是一项事务有它的好处也有它的坏处,比如分布式服务就要解决幂等性的问题。

幂等性问题

幂等性定义

一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。

保持幂等性的最终目的

  1. 对一个未发生改变的资源,需要无论多少次请求,只要它不改变,返回的结果都一样
  2. 避免各种原因的重复提交,导致强求业务的重复处理(因为重复处理,会浪费服务器处理时间、也可能浪费存储空间,还有可能会使相关逻辑业务发生错误)。

如何防止重复提交

对于幂等性问题无非是对增删改查进行幂等性保证处理

查操作幂等性处理

一般高性能分布式服务都会有缓存,如果只要保证缓存和数据库一致就能解决幂等性问题

删操作幂等性处理

也和查操作一样,对于高性能服务器,只要保证缓存和数据库一致就可以

新增和修改幂等性处理

新增要避免重复新增,修改要避免无效修改。

这个处理的时候,需要前端配合
新增和修改提交时,前端(在某一段时间内,如3秒内,3秒内不允许重复提交)传一个唯一的AddOrUpdateId到后端,后端接受到这个标志,我们把它存入缓存如redis,key为AddOrUpdateId 值为要返回的Value(如 false)。
当有同样的请求访问时,直接返回AddOrUpdateId 对应的Value。
什么时候更新Value,业务完成了就更新Value的值,比如从false变为true(代表 添加或者修改成功)

那么 这个缓存的生存周期是多少呢? 你不想用户多长时间内重复提交时间就是多长,2s、3s。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值