文档章节

简单秒杀优化

hello骡子
 hello骡子
发布于 2018/04/19 15:44
字数 440
阅读 7
收藏 0

秒杀优化:

一、简单优化

1、redis优化:

        应用redis超时缓存进行优化,对redis是否穿透,决定是否访问数据库。

2、事务在代码中优化:

        应用mysql行级锁,缩短作用于update行索引上事务的持有时间,达到快速秒杀目的。

        如:正常逻辑是先减库存(update)后(insert)购买记录,可调整为先进行insert的购买记录插入,再进行update减库存操作。减少了update→commit中事务持有时间。

二、深度优化:

3、存储过程优化:

        书写存储过程,对业务逻辑在mysql端进行优化,减少事务与代码交互。

简单插入测试:

DELIMITER $$;
CREATE PROCEDURE wn_test(in v_id int,out wn_result int)
BEGIN
	DECLARE select_count int DEFAULT 0;
	START TRANSACTION;
	SELECT * from ay_enterprise_alarm_type WHERE id = v_id;
	SELECT ROW_COUNT() INTO select_count;
	IF(select_count>0) THEN 
		set wn_result = 0;
		COMMIT;
	ELSE 
		set wn_result = select_count;
		COMMIT;
	END IF;
END
$$
DELIMITER ;

set @wn_result = -100;
set @v_id = 3671;
call wn_test(@v_id,@wn_result);
SELECT @wn_result;

这个row_count()函数,只有当update或者delete或者insert进行修改的时候,才可能会有值,
如果select的话,函数返回总是-1

其他存储过程参数参照:
https://www.cnblogs.com/mark-chan/p/5384139.html

4、队列序列化

        a.设置定长队列缓存,当单个商品对应队列超出定长,直接返回秒杀结束,缩减底层压力。

        b.设置产品队列,对产品队列被锐界过临界值的请求,直接返回秒杀结束。

5、分库分表

        以上条件受数据库影响,极致操作可以分库分表,这个在alibaba有成熟框架。

6、前端点击限制优化

        对单个页面的秒杀请求,进行按钮禁用和时间限制,阻止大量重复操作。

 

© 著作权归作者所有

hello骡子
粉丝 1
博文 19
码字总数 7347
作品 0
昌平
程序员
私信 提问
SpringBoot开发案例从0到1构建分布式秒杀系统

前言 最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路。俗话说,脱离案例讲架构都是耍流氓,最终使用SpringBoot模拟实现了...

小柒2012
2018/05/16
0
0
小柒2012/spring-boot-seckill

分布式秒杀系统 开发环境 JDK1.7、Maven、Mysql、Eclipse、SpringBoot1.5.10、zookeeper3.4.6、kafka_2.11、redis-2.8.4、curator-2.10.0 友情提示 由于工作原因,项目正在完善中(仅供参考)...

小柒2012
2018/05/19
0
0
01设计秒杀系统时应该注意的5个架构原则

说起秒杀,我想你肯定不陌生,这两年,从双十一购物到春节抢红包,再到12306抢火车票,“秒杀”的场景处处可见。简单来说,秒杀就是在同一个时刻有大量的请求争抢购买同一个商品并完成交易的...

兴国First
2018/10/09
0
0
如何设计一个秒杀系统——秒杀系统架构设计都有哪些关键点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26545305/article/details/88386842 一、如何理解秒杀系统 秒杀系统其实主要解决两个问题,一个是并发读,...

LemmonTreelss
03/11
0
0
一个媲美淘宝大秒杀系统的高性能架构设计思路

小编有话说:本文为纯干货技术文章,建议先转发、收藏再观看。 导论 曾经被问过好多次怎样实现秒杀系统的问题。昨天又在技术交流群被问到了。因此这里把我设想的实现秒杀系统的架构设计分享出...

老道士
06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

solr实例

需求:使用Solr实现电商网站中商品信息搜索功能,可以根据关键字、分类、价格搜索商品信息,也可以根据价格进行排序,并且实现分页功能。 一.架构设计:1.solr服务器 2.自己开发的应用(2.1...

klmkom
39分钟前
0
0
在知乎上看到一个关于Python资源的很不错的主题,可惜点赞不过400多

看上去,混知乎的技术相关的人还是少。 哪些 Python 库让你相见恨晚? Lingfeng Ai,伯乐在线技术翻译组,欢迎喜欢互联网和英… bulan1989、五德 等人赞同 Awesome Python中文版来啦! 本文由...

dillonxiao
46分钟前
3
0
(二)Django编写数据模型类

设计数据库和表结构是做网站的基础。在Django中,不需要通过SQL语句直接跟数据库打交道,而是完全用Python的类来创建数据模型,之后交给Django完成创建数据库的操作。 数据模型类 数据模型类...

ZeroBit
48分钟前
3
0
关于TensorFlow 2.0,这里有你想知道的一切

全文共8094字,预计学习时长30分钟或更长 图片来源:pexels.com/@pixabay TensorFlow是谷歌2015年开源的通用高性能计算库。最初主要是为构建神经网络(NNs)提供高性能的API。然而,随着时间的...

读芯术
53分钟前
5
0
Wondershare Recoverit - 专业数据恢复神器,支持U盘、存储卡等外部设备!

Wondershare Recoverit 今天带来的这款软件叫做Wondershare Recoverit,是一款专业实用的数据恢复软件,也是一款比较久的数据恢复软件了,可以恢复所有文件类型。 包括照片、视频、文档和其他...

_Somuns
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部