我对高并发的理解

来源:互联网 发布:未来单片机的发展趋势 编辑:程序博客网 时间: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
原创粉丝点击