跳转至

秒杀系统的一些思考

秒杀要关注的几个点:

  1. 高并发
  2. 数据一致性(不要超卖)
  3. 恶意请求

高并发

业务应用

尽量保证业务应用单一职责,即秒杀这种高并发业务可以尽量成为单独的一个应用,防止大量并发拖垮其他业务。同时使用微服务方式开发、部署,一个应用实例扛不住?那就加机器、加配置。

Nginx

  1. 动静分离
  2. 常用静态资源上 CDN
  3. 使用 Nginx 为后端服务器做负载均衡
  4. 保证 Nginx 高可用(keepalived)

MySQL

主从、双主等架构,各种数据库管理中间件、Keepalived 等。

对于数据量巨大的库表,合理使用分库分表。

Redis

简单点的就主从 + 哨兵,复杂点的就搭集群。

其他

一般项目使用中遇到的许多中间件和产品都有成熟的集群及高可用方案,项目中什么基础组件压力大就上什么集群。比如 ES 压力大就上 ES 集群,MQ 压力大就上 MQ 集群,照着官方给的文档一顿敲就好。

数据一致性

恶意请求

屏蔽:爬虫、代理池 IP。

限流(网关、验证码、令牌桶等):对于疯狂发请求的 IP 采取限流措施。