秒杀系统api的设计架构

若如初见. 提交于 2019-12-04 14:59:52

秒杀方案:

原子计数器   redis/mysql  redis 集群

记录行为   分布式MQ-rabbitMQ

消费消息并落地  mysql

运维成本和稳定性:NoSQL MQ 

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

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

不适合新手的框架。

=======

为什么不用mysql mysql低效

测试-

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

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

update确认影响记录数

优化思路:

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

定制sql方案:

 

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

优化总结:

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

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

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

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!