高并发的下单、抢票等问题解决方法的原理分析
来源:互联网 发布:淘宝上传视频怎么传 编辑:程序博客网 时间:2024/06/05 15:24
①为什么不能用数据库自带的表锁功能?
由于下单、抢票等是要写入数据库的,对数据库进行修改,所以采用的写锁,这样,被锁定的数据表就无法被其他地方使用,无论修改还是查询。比如一位用户购买商品时,锁定了商品表,另一位用户在浏览商品,则不能再去访问这张数据表了,不能访问表,意味着这一段时间加载不出商品,而高并发情况下,有很多的人下单。浏览商品,这段很短的锁表时间被放大化,会拖延整个网站的访问速度。
②如何解决这一问题?
1、首先明确我们需要的只是:在一个用户对一张表进行修改、删除等操作时,不让其他用户去对这张表进行修改、删除等操作。
2、我们可以创建一个文件,在使用下单功能等关于数据库修改、删除的操作前,打开这个文件,然后对这个文件进行锁定,在进行完对数据库的操作之后,关闭这个文件,再对这个文件解锁。
3、这样就能解决高并发问题的原因是我们相当于把对数据库操作的代码放在锁文件和解锁文件之间了。这样相当于一个标志位。当用户A试图修改数据时,锁定了这个文件。而另一个用户B也试图修改数据库、但是要执行数据库操作前,先得打开这个文件,而文件锁定了,这样用户B打不这个文件,只能阻塞在打开文件的代码处,这样就不能继续执行打开文件后的代码,只能等待打开这个文件。而用户A对数据库操作完后,解锁了这个文件。此时,用户B可以打开这个文件了,则可以继续对数据库进行修改、删除,同时把这个文件锁死,其他需要对数据库进行操作的用户将一直阻塞在打开文件,只能等待文件解锁,才能对这个数据库进行修改、删除了
4、只是在对数据库进行修改、删除时锁定本地的文件,而不是锁定数据表,这样用户仍然可以对数据库进行查询,添加等不影响用户浏览网页的访问,商户也可以添加新商品,不会拖延网站浏览等访问速度。
- 高并发的下单、抢票等问题解决方法的原理分析
- 高并发下的幂等策略分析
- 高并发下的下单功能设计
- 高并发下的下单功能设计
- 高并发下的下单功能设计
- 高并发下的单例模式
- 淘宝下单的高并发解决方案
- 高并发下乐观锁的原理
- 高并发下redis的瓶颈分析
- 大数据,高并发环境下的数据问题解决
- 高并发测试可能遇到的问题解决方法
- 高并发下线程安全的单例模式
- 淘宝下单部分高并发设计 的个人理解
- 高并发下线程安全的单例模式
- 解决高并发下的单例模式
- 高并发下线程安全的单例模式
- 高并发下线程安全的单例模式
- 【多线程高并发】ThreadLocal,高并发下的单例模式
- 浅谈设计模式之观察者模式
- assignment,shallow copy,deep copy,引用,不可变对象
- 《编程之美》- 2.14 - 求数组的子数组之和的最大值
- string in C++98 的用法总结
- C++多继承
- 高并发的下单、抢票等问题解决方法的原理分析
- MFC/浏览文件或文件夹
- 输入一个链表,反转链表后,输出链表的所有元素。
- Box2D C++ 教程-用户数据
- 将数组中的数逆向排列
- struts2设置加载非默认路径的struts.xml文件解决方案+Struts2初学 Struts2的action接收用户数据方式
- hdu 3507 Print Article 斜率优化dp
- MySQL入门--显示表结构的两种方式
- JavaSE入门学习46:文件传输基础之I/O流(五)(Java序列化)