没有合适的资源?快使用搜索试试~ 我知道了~
Web应用中并发控制的实现.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 75 浏览量
2021-11-09
12:48:21
上传
评论
收藏 58KB PDF 举报
温馨提示
试读
4页
Web应用中并发控制的实现.pdf
资源推荐
资源详情
资源评论
1 / 4
Web应用中并发控制的实现
摘要:
Web应用已由原来的网站、电子商务发展成商业应用系统的一种架构- B/S 架构,它已成为一个世界性的研究热点。但由于 Internet 网
络协议固有的局限性以及 Web应用中频繁的用户交互增加了在 Internet 上实现长事务的困难,从而, Web应用中的并发控制始终没能得到很
好的解决。 本文从 Hibernate 的乐观锁和悲观锁的实现原理出发, 给出了实现悲观锁的基本思路和实现时的注意事项, 在其它架构中得以推广
和应用。
引言
B/S 构架的应用越来越普及,但由于它有别于 C/S 构架的特殊性,并发控制始终没能得到很好的解决,如售票系统经常会出现同一张火
车票出售多次的现象。典型的案例如下:
例如若有两个客户端, A 客户先读取了账户余额 2000 元,之后 B 客户也读取了账户余额 2000 元的数据, A 客户提取了 500 元,对数据
库作了变更,此时数据库中的余额为 1500 元, B 客户也要提取 1300 元,根据其所取得的资料, 2000-1300 将为 700 余额,若此时再对
数据库进行变更,最后的余额 700 元就会不正确,应当是 200 元,问题的出现是由于两个客户对同一条数据进行并发访问造成的。
Web应用中并发控制的特殊性
上述问题在 C/S 构架中可以通过长事务来实现,但 Web应用是基于 Internet 网络环境的,其中的并发控制有其内在的特殊性:
1. Web 所基于的网络协议 HTTP(Hyper Text Transfer Protocol) 是一种无连接的协议,数据库服务器无法保存事务的状态信息;
2. 用户可以随时中止或启动浏览器中当前主页上的事务。
由于上述特殊性, Web应用中并发控制不能采用严格的长事务来实现,但可以长事务的思路来实现,在数据读取的时候把相应的数据锁
定,在更新阶段把锁放开,然后更新数据。
Web应用中并发控制的实现
业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在 金融 系统的日终结算处理中,我们希望针对某个 cut-off 时间点的
数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机
制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,就是所谓的“锁”,即给选定的目标数据上锁,使其无法被其他
程序修改。有两种锁机制:即通常所说的“乐观锁 (Optimistic Locking) ” 和“悲观锁 (Pessimistic Locking) ”。
1.乐观锁 (Optimistic Locking)
乐观锁 (optimistic locking) 则乐观的认为资料的存取很少发生同时存取的问题,因而不作数据库层次上的锁定,为了维护正确的数
据,乐观锁定使用应用程序上的逻辑实现版本控制来解决。
并发控制时,数据不一致的情况一旦发生,有几个解决的 方法 ,一种是先更新为主,一种是后更新的为主,比较复杂的就是检查发
生变动的数据来实现,或是检查所有属性来实现乐观锁定。
Hibernate 通过版本号检查来实现后更新为主,这也是 Hibernate 所推荐的方式,在数据库中加入一个 VERSON栏记录,在读取数据时
连同版本号一同读取,并在更新数据时递增版本号,然后比对版本号与数据库中的版本号,如果大于数据库中的版本号则予以更新,
否则就回报错误。
资源评论
BlueWatergg
- 粉丝: 3
- 资源: 11万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功