System

System Design

如何设计出健壮的秒杀系统

1 超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。 我们可以采用数据库乐观锁的方式,避免 2 高并发秒杀具有时间短、并发量大的特点,秒杀持续时间只有几分钟,而一般公司都为了制造轰动效应,会以极低的价格来吸引用户,因此参与抢购的用户会非常的多。短时间内会有大量请求涌进来,后端如何 防止并发过高造成缓存击穿或者失效 ,击垮数据库都是需要考虑的问题。 解决这个问题有几个思路。 2.1 秒杀页面静态化将商品的描述、参数、成交记录、图像、评价等全部写入到一个静态页面,用户请求不需要通过访问后端服务器,不需要经过数据库,直接在前台客户端生成,这样可以最大可能的减少服务器的压力。

见招拆招:秒杀系统的四大招数

面对海量的请求,我们可以做什么? 高并发请求的四大应对招数:扩容、静态化、限流,以及必杀技“有损服务”。1 招数一:扩容加机器,这是最简单的方法,通过增加服务器池的整体承载量来抗峰值,但是这样会造成资源的浪费,而且伸缩性较差,不能够及时的对突然到来的海量流量做出应变。 比如说,我们原有的服务器池可以承载 10,000 的 QPS,但是平常我们的访问量只有不到 200 QPS,这就会造成巨大的资源浪费; 但是如果我们把服务器数量降下去,承载量变为 500 QPS,突然来了 10,000

从秒杀系统窥见数据层的解耦设计

在开始之前,我们先思考一个问题:秒杀系统的本质是什么?1 秒杀系统的问题本质是什么?1 秒杀系统的两大特点:大流量、高并发; 2 电商系统 = 数据库的增删改查 3 电商系统 = 小请求量 + 秒杀系统 4 秒杀系统 = 海量请求 + 电商系统 其实说白了,秒杀系统不过是一个瞬时流量很大的电商系统而已。在普通的电商系统中,数据库并不太算是一个短板,因为数据量和请求速率并不能压垮数据库。但是在秒杀系统中不一样,如果直接把海量的请求和数据扔给数据库,数据库会立刻原地爆炸的。 1.1 数据库在高并发下会遇到什么问题?首先,MySQL