高并发业务的处理

典型场景:秒杀

一 提前准备工作

1.系统独立部署

2.做好系统性能容量规划     (两个方面 一是对系统性能有个计算,另外还需要对并发量有个预估)

    容灾 和过载保护措施 

3 系统的拆分 比如:按功能模块,按实时/非实时,按动态/静态等

4 设置商品定时上架的时间

5 服务器时钟同步

6 动态生成下单页面的URL(不能使用固定的url ,防止用户直接使用url提交)

二 前端页面 

 1:静态页面 + Ajax 获取动态内容: 比如 实时库存 活动状态 当前时间 等

 2:CDN部署

 3:静态页面和资源的缓存

 4:JS对请求的过滤,比如 获取检验码,秒杀时间开始 或者已售完自动结束等

  主要目的是快速获取页面 和减少对后端服务器的请求

今天太晚了 明天接着写


高并发业务的处理
 

继续:

 三Web前端

1:F5/Lvs +Nginx 来接收高并发的请求,并做负载均衡

2:Nginx + Lua + Redis 来做请求队列,并实现一些基本控制,比如:限流、账号参加次数检查、同

   一IP讲求数检查等

3:Varnish 来缓存静态页面和静态资源

4: 进入Tomcat集群,先做一个预处理,判断这些账户是否能参与活动,比如 账号等级是否足够,账

号行为是否正常,是否在黑名单上等

四 逻辑层

1:按照Redis的请求队列进行先后处理

   逻辑层 先去另一个Redis(处理成功的信息)

2:纯内存操作 + 异步

3:控制超卖

4:Redis 里面 存放着 SKU的库存数据 

5:处理成功的信息也放在Redis里


高并发业务的处理
 
高并发业务的处理
 

其它注意事项

1:合理设计接口

2:应当及时告知用户结果

3:考虑业务规则,比如减库存的时机

4:服务器尽量集群,并做HA,做好灾备,避免雪崩

5:缓存服务器如果要重启,要做好预热

6:对抗作bi,比如:同一账户同时发多个请求,同一IP同时发大量请求、秒杀器采用多账户多IP发送

请求等

后面会紧跟着几篇java并发编程的例子

相关推荐