秒杀系统api的设计架构

秒杀方案:前端

原子计数器   redis/mysql  redis 集群mysql

记录行为   分布式MQ-rabbitMQredis

消费消息并落地  mysqlsql

运维成本和稳定性:NoSQL MQ 后端

开发成本:数据一致性,回滚方案等。api

幂等性难保证:重复秒杀问题。缓存

不适合新手的框架。网络

=======框架

为何不用mysql mysql低效运维

测试-

同一条mysql update  压力测试 4w qps 每秒4万次。

优化方向 减小行级锁的持有时间。

update确认影响记录数

优化思路:

把客户端逻辑放到mysql服务端,避免网络延迟和GC影响。

定制sql方案:

 

  • update /*+[auto_commit]*/,须要修改MySQL源码
  • 使用存储过程:整个事物在MySQL端完成。

优化总结:

前端控制:暴露接口,按钮防重复。

动静态数据分离:cdn缓存,后端缓存。

cdn--api像cdn推送数据和页面等。

事务竞争优化-减小事务锁持有时间。有网络延迟和GC,改为MYSQL处理。

相关文章
相关标签/搜索