秒杀问题:
多人集中时间读写同一份库表,读写冲突,锁严重
优化思路
- 将请求尽量拦截在系统前端
- 利用缓存
优化细节
-
客户端优化
- 产品设计- 按钮点击后置灰,避免重复提交
- JS- 限制用户在指定时间间隔提交请求次数
-
站点优化(针对需要登录的页面)
- 通一uid,限制访问频度,对uid进行控制和去重,防止程序员for循环调用
比如x秒内透过一个请求,其他请求都用页面缓存,返回统一页面
- 通一uid,限制访问频度,对uid进行控制和去重,防止程序员for循环调用
-
服务层优化
- 对于写请求,使用请求队列,每次透有限个写请求到数据层,多少数据透多少请求,如果请求都成功,其余请求返回“已无资源等等”
- 对于读请求,上cache
-
业务规则优化
- 分时分段等等...
- 数据粒度优化,比如对余量查询,如果只关心有还是无,而不关心数量,则做粗颗粒度的“有、无”缓存即可。