我对高并发的理解
来源:互联网 发布:未来单片机的发展趋势 编辑:程序博客网 时间:2024/06/09 03:36
高并发的产生
对于web项目,随着用户量的增加就有可能产生高并发的问题。高并发简单的来说就是在同一时刻不同用户访问同一资源的问题,专业一点的说法就是在同一时刻有多个线程访问了同一个数据资源。
解决方案
目前对于高并发大部分的解决方案都是通过锁机制,锁机制有两个层面。
一种是代码层次上的,如java中的同步锁,典型的就是同步关键字synchronized,这里我不在做过多的讲解,感兴趣的可以参考:http://www.cnblogs.com/xiohao/p/4151408.html另外一种是数据库层次上的,比较典型的就是悲观锁和乐观锁。这里我们重点讲解的就是悲观锁(传统的物理锁)和乐观锁。我所在的公司是一个汽车电商平台,所以订单量非常的大,有时候做个促销活动、发点优惠卷的时候,高并发就是一个不可忽视的问题。在架构设计设计上,采用的是乐观锁机制,通过‘version’版本字段来控制并发问题,原理我贴一段SQL就清楚了
update t_order set qty=1 and version=version+1 where version=:version
这里就是在更新操作时验证当前订单的版本号时候被其它事务改变否则就已报错的方式,引导用户重新查询然后编辑。这样讲来比较简单,但是就是这么简单就可以处理高并发的问题,对于数据库和系统性能也不会有什么影响。以外一种悲观锁机制,一般都是通过数据库的特性来解决,数据库的四大特性中有一个隔离性,意思就是说在同一个事物内操作的数据会被加上锁,其它操作不能够访问。通过数据库加锁这种方式并不好,第一大量的锁会给数据库带来很大的开销,而且对于用户而言没有获取锁就不能操作数据,陷入等待的状态,非常不友好。
4 0
- 我对高并发的理解
- 理解高并发(2).我对并发编程的理解
- 我目前对并发的理解
- 我对高质量代码的理解
- 理解高并发(6).jvm对内置锁的优化
- 聊聊高并发(五)理解缓存一致性协议以及对并发编程的影响
- 高并发的简单理解
- 谈谈我对Java并发的理解——读《Java并发编程实战有感》
- 理解高并发(13).完成后给我报告countDownLatch
- 对应对高并发的一些思考
- 我所知道的高并发
- 我对SOA的理解我对SOA的理解
- 高并发Java 十 JDK8对并发的新支持
- 高并发Java 十 JDK8对并发的新支持
- 我对COM的理解
- 我对事件的理解
- 我对SOA的理解
- 我对SOA的理解
- springmvc小计
- 安卓好的开源项目
- 图片的无限轮播
- TextView 固定背景图片不随文字变长而变长
- 深度学习:keras 学习笔记
- 我对高并发的理解
- (M)SIM卡开机流程分析之SPN加载
- 籍贯
- pycharm下的多个python版本共存(一)
- Qt 之 ActiveX控件跑官方例程记录
- 关于hadoop hdfs中Non DFS Used占用很大的问题分析处理
- isEmpty与isBlank区别
- POJ 1922 Ride to School 题解
- LeetCode (14)Longest Common Prefix