关于秒杀,给你做,你会怎么做?从架构角度思考怎么实现。
一秒杀的场景业务分析
关于秒杀、抢购、群红包、抽奖等等类似的业务场景可参考本文技术(提供方向),
业务特点为大幅推广,持续时间短,瞬时高并发,
针对业务需要的技术特点为读多写少,高并发,资源冲突
为此技术选型:读多写少选择使用缓存,
高并发选择缓存、限流、负载均衡、异步和队列
资源冲突选择原子操作包括数据库锁(悲观锁乐观锁)、分布式锁(Redis zookeeper)、其他原子操作;异步
二秒杀的技术解析
所以看下技术架构
现在假设通过第一步的缓存,验证码什么的,最后剩10000的并发进入nginx,这个时候进入nginx采取三个方式处理并发,一是动静分离,静态页面由nginx处理,动态的请求才进入服务由Tomcat处理;二是限流,限制进入服务的请求,限流算法包括令牌桶和漏桶;三是负载均衡有nginx配置不同负载。
经过上述处理后剩下大概1000并发,
此时可以通过分布式限流,包括nginx+lua或者Redis+lua等手段进行,此时剩余800多个请求
此时分给Tomcat集群,假设三个Tomcat,则每个Tomcat并发大概270这样,则压力好一点,可以处理了,用Tomcat抗并发。
如果数字比这个大,你不放心,可以使用异步,使用MQ;
最后使用原子操作操作数据库。