弱网环境测试与重复提交问题总结

一、弱网环境测试

所谓弱网环境简单来说就是网络质量较差导致丢包和延迟等现象,具体现象就是app响应很慢。测试工具用的是强大的fillder(没用过的自行google),fiddler是通过延迟发送或接收数据的时间来模拟限速,设置方法是:Rules → Performances → Simulate Modem Speeds,然后按Ctrl+r快捷键会自动打开一个CustomRules.js文件,里面有各种自定义的规则。其中有这么一段:

if (m_SimulateModem) {
oSession["request-trickle-delay"] = "300";
oSession["response-trickle-delay"] = "150";
}

意思是每延迟300ms发送1kb的数据,每延迟150ms下行1kb的数据,具体值可以修改,自定义限速。定义完数据保存之后,已经勾选的SimulateModem Speeds会被取消,按照上面的步骤再次将其勾选即可。

再说下通过fillder来调试手机app运行所需要的基本设置:

设置手机代理IP和端口

找到手机的设置–>WLAN–>已连接的WiFi,长按,弹出修改网络的选项,点击进入,在“显示高级选项”前打钩,将电脑的IP和端口设置进去,端口一般选的是8080,但是可能会出现此端口被占用的情况,选择其他端口也可以。

2.设置filler,如下图

 弱网环境测试与重复提交问题总结

3.打开app点击签到功能,发现签到响应缓慢,可重复点击,这就造成了几乎同一时间,同一个用户有多个签到请求发送到服务器,这几个请求检查是否已经签到时发现当天记录为空(还都没有来得及写进到数据库),这样在高并发的情况下就会有多条记录同时写入签到记录表。

二、并发重复提交解决方案

弱网环境所引发的这个并发重复提交问题,在服务器端有一个比较简单的解决方案:利用mysql唯一索引机制的验证,当有重复数据写入时就会被拒绝,保证数据的唯一性。

另外一种方案是利用redis计数器特性,由于redis是单线程原子性操作,不存在多线程并发的问题,将userId和年月日作为key,每次签到请求进来加1,如果得到的值等于1,说明这是当天第一次签到,写入数据库,如果大于1,则直接返回“已签到”信息提醒用户即可。



作者:灿若繁星

来源:51CTO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值