网络抖动对重复提交的影响与解决方案
本以为丢数据的问题解决就可以暂时摸摸鱼歇一歇了,但是数据中心找过来,我们业务数据存在大量重复数据,导致他们数据清洗的时候无法进行费用结算,一开始就想自己不会去重???跟我有毛关系,但是想归想,因为重复数据还是要在业务上解决的 ,重复数据首先想到要不要做幂等,是因为并发还是数据不一致造成的,经过多次复现后,还是因为网络抖动发生的短时间内的重复提交,和模拟并发造成的,解决方案一是做乐观锁,二是做redis分布式锁,由于业务涉及数据量较大,不适合频繁数据库查库操作,每次比对可能还是会对主表造成等待超时,因为业务上的并发,决定用redis来控制,参考监控数据来控制过期时间,单次请求最快为4S,最慢为6秒,但是考虑到存在下游业务调用以及多单处理,将超时时间定位1分钟,经过短暂的模拟和测试后,暂定此方案通过。
1. 引言
网络抖动是指在互联网传输过程中,数据包在网络中传输时出现的不稳定现象。它可能由网络拥堵、传输距离远、网络故障等多种原因引起,这会导致数据包的延迟、丢失和重新排序等问题。在互联网应用中,网络抖动可能引发用户重复提交操作,给系统带来额外的负荷并影响用户体验。
2. 网络抖动对重复提交的影响
2.1 增加服务器负荷
网络抖动可能导致客户端误认为请求未成功,从而多次发送请求到服务器。这样一来,服务器需要处理多个重复请求,增加了服务器的负荷。如果网络抖动严重,服务器可能会陷入处理请求的死循环中,导致系统崩溃。
2.2 数据一致性问题
在涉及到写操作的互联网应用中,网络抖动可能导致重复提交的数据不一致。比如,在在线支付系统中,用户多次点击支付按钮可能导致重复扣款。这会给用户和商家带来混淆和不便。
2.3 用户体验下降
网络抖动引发重复提交会增加用户等待时间,降低用户体验。尤其是在需要用户等待服务器响应的场景下,如文件上传、在线游戏等,用户可能会因为连续多次点击而导致等待时间的延长,进而产生不满和流失。
3. 解决方案
3.1 幂等性设计
通过在互联网应用中引入幂等性设计,可以有效避免重复提交带来的问题。幂等性是指对同一个操作的多次执行所产生的影响与一次执行的影响相同。通过在服务端为每一次请求生成唯一标识符,并在处理请求时校验这个标识符,可以避免重复提交的操作被多次执行。
3.2 前端防抖动
在前端页面的设计中,可以通过引入防抖动机制来减少用户的误操作。通过设置合理的时间间隔,在用户操作后的一段时间内忽略重复的操作请求,从而避免触发重复提交。
3.3 提示机制
互联网应用可以在用户进行操作时给出相应的提示,告知用户避免重复提交。例如,在用户提交订单后,页面可以显示一个加载动画,同时给出文字提示“订单信息正在处理中,请勿重复提交”,从而引导用户等待并避免重复操作。
3.4 后台请求的幂等性处理
在服务端接收到请求后,可以进行幂等性处理。通过记录已经处理的请求信息,对于重复提交的请求,服务器可以进行去重操作,以避免重复执行相同的任务。
3.5 事务和锁机制
对于涉及到写操作的互联网应用,可以通过引入事务和锁机制来保证数据的一致性。在第一次接收到请求时开启事务,执行相应的写操作,并且将数据的状态锁定。这样,在接收到重复提交的请求时,服务端可以通过锁机制判断数据是否已经处理完成,从而避免重复执行写操作。
4. 结论
网络抖动对重复提交造成的影响是不可忽视的,对互联网应用的性能和用户体验有着直接的影响。通过合理的设计和技术手段,可以降低网络抖动带来的重复提交问题。在未来,我们还需要在网络架构和优化方面进一步研究,以提供更好的解决方案来应对网络抖动。
- 点赞
- 收藏
- 关注作者
评论(0)