对中小企业的网站来说,商品的秒杀或者抽奖等活动时会造成服务的崩溃,但做活动或者营销还是必须的,针对这类问题,因工期比较紧急,不适合对现有系统做较大的改动,使用外面的工具有很难控制隐私的保护,也不能够获取到第一手资料,如何以最小的代价来满足这类企业的需求呢?
下面是我的一点思考。架构图如下:
说明如下:使用1000并发以下的场景- 商品页面对秒杀商品做特殊标记,如类型,报文头等等
- 验证用户最重要,先判断用户是否存在,是否已经抢购过,是否白名单或者黑名单等等,用户验证要截掉绝大部分非正常流量
- 进入排队序列
- 原流程增加读取排队队列,控制频率,减少正常业务压力
- 原程序也要限制并发数目,如使用信号量(Semaphore)来限制每台应用服务的并发量不超过200
最核心的其实时用户验证这块,这部分时流量的第一道闸。