如何设计秒杀系统?
Posted IT东方会
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设计秒杀系统?相关的知识,希望对你有一定的参考价值。

-
静态API:内容可被缓存, 并且信息公开访问的结果。
-
动态API:也就是具体的业务接口。比如下单,比如登录。
-
读出来库存数量是n, 查看n的值是否大于0 -
cas传入库存值的内存地址, compare是否仍为n, -
如果是n, 则将库存设置为n-1 -
如果不是n. 说明被其他用户购买过程所修改, 则从 第一条 重复开始.

-
可以用Strace / Callgrind查看所有的系统调用, 如果是Malloc的瓶颈可以实现一个内存池。
-
来自网卡的中断默认会打到CPU0上, 如果是Numa架构,可以用Numactl将进程绑定到其他核, 也能提升CPU的缓存利用率。
-
BSD的网卡支持Polling 减少中断的冲击, Linux下支持Bounding提高可靠性。如果用云,就不用考虑这个问题了。
-
尽量把流控环节前置,前端逻辑,CDN实在没办法了再去动后端。 -
将分散的瓶颈点进行合并, 比如将API分组后, 接口问题就收敛到API的版本查询. 而基于版本与前端配合还可以做内容预加载。
-
对于MQ, 核心原则是小消息大运算, 如果堆积消息超过内存, 就会用到磁盘,性能会急剧下降。
▼ 更多精彩文章 ▼
以上是关于如何设计秒杀系统?的主要内容,如果未能解决你的问题,请参考以下文章