CN101364230B - 一种并发访问控制方法及装置 - Google Patents
一种并发访问控制方法及装置 Download PDFInfo
- Publication number
- CN101364230B CN101364230B CN2008101612936A CN200810161293A CN101364230B CN 101364230 B CN101364230 B CN 101364230B CN 2008101612936 A CN2008101612936 A CN 2008101612936A CN 200810161293 A CN200810161293 A CN 200810161293A CN 101364230 B CN101364230 B CN 101364230B
- Authority
- CN
- China
- Prior art keywords
- request
- lock
- access
- application
- visit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种并发访问控制方法及装置,以解决目前的数据库锁机制存在数据库负担加重、容易产生死锁的问题。所述方法包括:服务器端接收访问请求;确认所述请求是否需要申请访问锁,如果是,则申请访问锁;如果申请访问锁成功,则通过访问数据库执行该请求;当该请求执行完毕后,释放所述访问锁。本发明提供了一套应用层次级别的锁机制,该机制将并发访问控制在应用服务器端,请求在到达数据库之前就被应用服务器端进行了过滤,过滤掉了并发请求。因此,在多用户、存在并发访问的情况下有效控制了数据的并发访问与修改,能够减轻数据库的负荷,并能有效降低数据库的死锁、等待等异常情况。
Description
技术领域
本发明涉及网络技术领域,特别是涉及一种并发访问控制方法及装置。
背景技术
在很多互联网的应用(或应用系统)中,都涉及数据的并发访问。并发访问是指同一个数据被多个操作同时访问,这时需要通过并发访问控制技术解决,从而防止多个操作之间互相影响。例如,一条数据可以被多个用户维护,当一个用户修改该数据时,其他用户将不能对它进行修改;或者,当一个功能正在进行的时候,该功能所使用的一批数据将不能被其他功能所使用,即其他的某些功能将不允许同时运行。这样,就不会出现一条数据被多个操作同时修改而出现数据紊乱的情况。
目前,普遍使用的并发访问控制是通过数据库自身的锁机制来实现。在多用户、存在并发访问的情况下,数据库提供了一套锁机制,通过对被访问的数据上访问锁,并让其他并发操作排队等待,来防止该数据同时被其他操作修改。这种数据库锁机制解决了数据并发访问的问题,是目前的应用系统较多使用的一种方法。
但是,这种数据库锁机制通常只适用于并发量不太大的情况,如果应用系统的并发量增大,数据库要处理的并发数据就增多,就会加重数据库负担;而且,如果访问同一个数据的并发操作增多,就会增加数据库并发操作排队等待的时间和产生死锁的几率。
发明内容
本发明所要解决的技术问题是提供一种并发访问控制方法及装置,以解决目前的数据库锁机制存在数据库负担加重、容易产生死锁的问题。
为解决上述技术问题,根据本发明提供的具体实施例,本发明公开了以下技术方案:
一种并发访问控制方法,包括:
应用服务器端接收访问请求;
根据预置的配置信息,确认所述请求要访问的数据是否需要申请访问锁,或者所述请求执行的功能是否需要申请访问锁;如果是,则申请访问锁;所述预置的配置信息的形成是通过业务分析,对于每个需要防止并发访问的数据或功能,都预先注册到应用服务器端的配置信息中;
如果申请访问锁成功,则通过访问数据库执行该请求;
当该请求执行完毕后,释放所述访问锁。
优选的,所述通过访问数据库执行该请求之前,还包括:采用数据库锁机制对该请求进行并发访问控制。
优选的,所述方法还包括:如果申请访问锁不成功,则应用服务器端直接返回该请求无法被处理的消息。
优选的,如果申请访问锁成功之后,还包括:记录该请求申请访问锁的相关信息,并提供界面方式监控所述记录的信息。
其中,所述访问锁包括共享锁和排他锁。
本发明还提供了一种并发访问控制装置,所述并发访问控制装置位于应用服务器端,包括:
请求接收单元,用于接收访问请求;
确认单元,用于根据预置的配置信息,确认所述请求要访问的数据是否需要申请访问锁,或者所述请求执行的功能是否需要申请访问锁所述预置的配置信息的形成是通过业务分析,对于每个需要防止并发访问的数据或功能,都预先注册到应用服务器端的配置信息中;
访问锁申请单元,用于当所述请求需要申请访问锁时,申请访问锁;
请求执行单元,用于当申请访问锁成功时,通过访问数据库执行该请求;
访问锁释放单元,用于当该请求执行完毕后,释放所述访问锁。
访问锁释放单元,用于当该请求执行完毕后,释放所述访问锁。
优选的,所述装置还包括:数据库并发控制单元,用于执行该请求前,采用数据库锁机制对该请求进行并发访问控制。
优选的,所述装置还包括:通知单元,用于当申请访问锁不成功时,直接返回该请求无法被处理的消息。
优选的,所述装置还包括:存储单元,用于记录该请求申请访问锁的相关信息;监控单元,用于提供界面方式监控所述记录的信息。
根据本发明提供的具体实施例,本发明具有以下技术效果:
首先,本发明提供了一套应用层次级别的锁机制,该机制将并发访问控制在应用服务器端,请求在到达数据库之前就被应用服务器端进行了过滤,过滤掉了并发请求。因此,在多用户、存在并发访问的情况下有效控制了数据的并发访问与修改,能够减轻数据库的负荷,并能有效降低数据库的死锁、等待等异常情况。
其次,本发明的应用服务器端没有设置等待队列,当请求申请访问锁不成功的时候,应用服务器端会直接返回该请求无法被处理的消息,而不是像传统的数据库锁机制一样将该请求放入等待队列。这样,用户就可以直接得到请求是否被处理的消息,可以大大减少用户的无效操作,提高了系统响应用户的时间。
再次,本发明还提供了监控界面来显示和管理访问锁的申请情况,极大地方便了用户的操作。
附图说明
图1是本发明实施例一所述一种并发访问控制方法的流程图;
图2是本发明实施例二所述一种并发访问控制方法的流程图;
图3是本发明实施例所述一种并发访问控制装置的结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明提供了一套应用层次级别的锁机制,该机制将并发访问控制在应用服务器端,请求在到达数据库之前就被应用服务器端进行了过滤,过滤掉了并发请求。下面通过实施例一和实施例二进行详细说明。
本发明实施例中,主要提供了两种锁,一种是共享锁,一种是排他锁。所述共享锁(S锁)是指:如果事务T对数据A加上共享锁后,则其他事务可以对A再加共享锁,但不能加排他锁;而获准共享锁的事务只能读数据,不能修改数据。所述排他锁(X锁)是指:如果事务T对数据A加上排他锁后,则其他事务不能再对A加任何类型的锁;而获准排他锁的事务既能读数据,又能修改数据。
实施例一:
参照图1,是实施例所述一种并发访问控制方法的流程图。其中,下述流程中的服务器端均指应用服务器端。
S101,客户端向服务器端发送访问请求,服务器端接收该请求;
S102,服务器端确认所述请求是否需要申请访问锁,如果是,则继续S103申请访问锁;如果否,则按照一般的处理流程执行该请求;
所述确认过程是指确认当前请求要访问的数据是否为需要防止并发访问的数据,或者,当前请求要执行的功能是否为需要防止并发访问的功能(该功能可能需要访问一批数据)。在服务器处理业务的过程中,有些数据或功能可以被并发访问或执行,而有些却不能。例如,对某条数据的修改,当一个人正在编辑时其他人就不能编辑;对某些业务数据进行统计汇总等功能时不允许其它改变这些数据的功能执行,等等。
S103,申请访问锁,判断申请访问锁是否成功,如果成功,则通过访问数据库执行该请求;如果不成功,则不执行;
每个需要防止并发访问的数据或功能在申请访问锁之前,都需要进行确认。对于申请共享锁,如果已经有相同的共享锁存在,则确认是否可以继续申请共享锁,如果可以,则申请成功;如果不可以,则申请不成功。对于申请排他锁,则确认是否有相同的排他锁已经存在,如果存在,表示该数据正在被其他请求访问,或者该功能正在被其他请求执行,则不能申请成功;如果不存在,则申请成功。申请成功后,执行该请求的时候需要访问数据库来读取或编辑需要的数据。
S104,当该请求执行完毕后,释放所述访问锁。
当某个数据或功能的访问锁被释放后,其他的请求可以继续申请访问锁。
将上述应用层次级别的锁机制与传统的数据库锁机制进行比较:
传统的数据库锁机制是对到达数据库的并发请求采用锁机制进行并发控制,而本发明所述应用层次级别的锁机制是并发请求还没有到达数据库之前,在应用服务器端就进行了并发控制,如果当前请求能够申请到访问锁,然后才能到达数据库进行访问。因此,这种并发控制方式可以把大量的并发请求拦截到服务器端,减轻了数据库的负荷,并能有效降低数据库的死锁、等待等异常 情况。
优选的,对于申请不成功的请求,本实施例的服务器端并没有设置等待队列,而是直接向客户端返回该请求无法被处理的消息,而不是像传统的数据库锁机制一样将该请求放入等待队列。这样,用户就可以直接得到请求是否被处理的消息,大大减少了用户的无效操作,提高了系统响应用户的时间。如果用户希望该请求继续被处理,则需要重新向服务器端发起请求。
实施例二:
参照图2,是实施例二所述一种并发访问控制方法的流程图。
S201,客户端向应用服务器端发送访问请求,应用服务器端接收该请求;
S202,应用服务器端根据配置信息确认所述请求是否需要申请访问锁,如果是,则继续S203申请访问锁;如果否,则按照一般的处理流程执行该请求;
本实施例提供了一种可以配置的方式进行并发控制。通过业务分析,对于每个需要防止并发访问的数据或功能,都预先注册到应用服务器端的配置信息中,从而确定了需要加锁的并发对象。每次有并发访问的时候,首先检查所述配置信息中是否有当前请求要访问的对象,如果有,则需要申请访问锁;如果没有,则不需要申请。这种配置的方式更加灵活,用户可以方便的增加或删除并发对象。
S203,申请访问锁,通过读取访问锁容器来判断申请访问锁是否成功,如果成功,则将该请求申请访问锁的相关信息记录到访问锁容器中,并提供界面方式监控所述记录的信息;如果不成功,则直接向客户端返回该请求无法被处理的消息;
所述访问锁容器中记录了请求申请访问锁的相关信息,如请求标识、该请求要访问的对象(数据或功能)、该请求申请的访问锁的类型(共享锁和排他锁)等。应用服务器端通过读取这些信息,就可以获知当前请求要访问的对象是否已经被申请访问锁(排他锁),或者是否可以继续申请访问锁(共享锁)。
本实施例提供了界面方式来监控访问锁容器,用户通过界面可以实时地看到数据库中的数据使用访问锁的情况,极大地方便了用户的操作;尤其是当锁没有被释放等意外情况产生的时候,可以通过此界面及时解决。
S204,如果申请成功,则采用数据库锁机制对该请求进行并发访问控制,然后通过访问数据库执行该请求;
本实施例不仅采用了应用层次级别的锁机制,还充分利用了数据库的锁机制,对并发访问进行双重控制。如果访问锁申请成功,该请求会到达数据库进行数据访问,这时数据库利用自身的锁机制对该请求再次进行判断,判断是否可以申请访问锁,如果可以,则读取数据库数据执行该请求;如果不可以,则进行异常处理。这种双保险机制进一步提高了并发控制的可靠性。
S205,当该请求执行完毕后,释放所述访问锁。
对于互联网上的应用,本发明提供了一种可配置的、可靠的并发访问控制方法,可以防止数据同时被不同进程修改可能导致的死锁、数据错误等问题,还可以避免一种功能运行时其他可能产生冲突的功能运行,并能够有效降低数据库负荷,加快对用户操作的响应,为用户提供更优质的服务。
针对上述方法实施例,本发明还提供了相应的装置实施例。参照图3,是实施例所述一种并发访问控制装置的结构图。所述装置设置与应用服务器端,主要包括:
请求接收单元U31,用于接收访问请求;
确认单元U32,用于确认所述请求是否需要申请访问锁;
访问锁申请单元U33,用于当所述请求需要申请访问锁时,申请访问锁;
请求执行单元U34,用于当申请访问锁成功时,通过访问数据库执行该请求;
访问锁释放单元U35,用于当该请求执行完毕后,释放所述访问锁。
所述装置供了一套应用层次级别的锁机制,该机制将并发访问控制在应用服务器端,请求在到达数据库之前就被应用服务器端进行了过滤,过滤掉了并发请求。因此,在多用户、存在并发访问的情况下有效控制了数据的并发访问与修改,能够减轻数据库的负荷,并能有效降低数据库的死锁、等待等异常情况。
优选的,所述确认单元U32根据预置的配置信息,确认所述请求要访问的数据是否需要申请访问锁,或者所述请求执行的功能是否需要申请访问锁。 这种配置的方式更加灵活,用户可以方便的增加或删除并发对象。
优选的,所述装置还包括:数据库并发控制单元U36,用于执行该请求前,采用数据库锁机制对该请求进行并发访问控制。这种双保险机制进一步提高了并发控制的可靠性。
优选的,所述装置还包括:通知单元U37,用于当申请访问锁不成功时,直接返回该请求无法被处理的消息。这样,用户就可以直接得到请求是否被处理的消息,可以大大减少用户的无效操作,提高了系统响应用户的时间。
优选的,所述装置还包括:存储单元U38,用于记录该请求申请访问锁的相关信息;监控单元U39,用于提供界面方式监控所述记录的信息。用户通过界面可以实时地看到数据库中的数据使用访问锁的情况,极大地方便了用户的操作;尤其是当锁没有被释放等意外情况产生的时候,可以通过此界面及时解决。
图3所示装置中未详述的部分可以参见图1、图2所示方法的相关部分,为了篇幅考虑,在此不再详述。
以上对本发明所提供的一种并发访问控制方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种并发访问控制方法,其特征在于,包括:
应用服务器端接收访问请求;
根据预置的配置信息,确认所述请求要访问的数据是否需要申请访问锁,或者所述请求执行的功能是否需要申请访问锁;如果是,则申请访问锁;所述预置的配置信息的形成是通过业务分析,对于每个需要防止并发访问的数据或功能,都预先注册到应用服务器端的配置信息中;
如果申请访问锁成功,则通过访问数据库执行该请求;
当该请求执行完毕后,释放所述访问锁。
2.根据权利要求1所述的方法,其特征在于,所述通过访问数据库执行该请求之前,还包括:
采用数据库锁机制对该请求进行并发访问控制。
3.根据权利要求1所述的方法,其特征在于,还包括:
如果申请访问锁不成功,则应用服务器端直接返回该请求无法被处理的消息。
4.根据权利要求1所述的方法,其特征在于,如果申请访问锁成功之后,还包括:
记录该请求申请访问锁的相关信息,并提供界面方式监控所述记录的信息。
5.根据权利要求1所述的方法,其特征在于:所述访问锁包括共享锁和排他锁。
6.一种并发访问控制装置,其特征在于,所述并发访问控制装置位于应用服务器端,包括:
请求接收单元,用于接收访问请求;
确认单元,用于根据预置的配置信息,确认所述请求要访问的数据是否需要申请访问锁,或者所述请求执行的功能是否需要申请访问锁;所述预置的配置信息的形成是通过业务分析,对于每个需要防止并发访问的数据或功能,都预先注册到应用服务器端的配置信息中;
访问锁申请单元,用于当所述请求需要申请访问锁时,申请访问锁;
请求执行单元,用于当申请访问锁成功时,通过访问数据库执行该请求;
访问锁释放单元,用于当该请求执行完毕后,释放所述访问锁。
7.根据权利要求6所述的装置,其特征在于,还包括:
数据库并发控制单元,用于执行该请求前,采用数据库锁机制对该请求进行并发访问控制。
8.根据权利要求6所述的装置,其特征在于,还包括:
通知单元,用于当申请访问锁不成功时,直接返回该请求无法被处理的消息。
9.根据权利要求6所述的装置,其特征在于,还包括:
存储单元,用于记录该请求申请访问锁的相关信息;
监控单元,用于提供界面方式监控所述记录的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101612936A CN101364230B (zh) | 2008-09-24 | 2008-09-24 | 一种并发访问控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101612936A CN101364230B (zh) | 2008-09-24 | 2008-09-24 | 一种并发访问控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101364230A CN101364230A (zh) | 2009-02-11 |
CN101364230B true CN101364230B (zh) | 2011-04-20 |
Family
ID=40390596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101612936A Active CN101364230B (zh) | 2008-09-24 | 2008-09-24 | 一种并发访问控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101364230B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894142B (zh) * | 2010-06-28 | 2013-11-06 | 中兴通讯股份有限公司 | 一种避免智能网系统中数据库死锁的方法和装置 |
CN102025728A (zh) * | 2010-11-26 | 2011-04-20 | 中兴通讯股份有限公司 | 客户端/服务端架构下的调度方法和服务器 |
CN103544153B (zh) * | 2012-07-10 | 2016-07-27 | 阿里巴巴集团控股有限公司 | 一种基于数据库的数据更新方法和系统 |
CN102866909B (zh) * | 2012-08-27 | 2018-02-27 | 北京奇虎科技有限公司 | 一种控制对接口资源访问的资源锁的系统和方法 |
GB2507484A (en) | 2012-10-30 | 2014-05-07 | Ibm | Limiting the number of concurrent requests in a database system |
CN103336789A (zh) * | 2013-06-06 | 2013-10-02 | 华为技术有限公司 | 一种数据库系统的锁操作方法及设备 |
CN105593824A (zh) * | 2013-09-30 | 2016-05-18 | 惠普发展公司,有限责任合伙企业 | 用注入的窗口小部件代码控制代理工具 |
CN104077111B (zh) * | 2014-06-24 | 2018-03-02 | 用友优普信息技术有限公司 | 业务操作的并发访问控制方法及装置 |
CN105187385A (zh) * | 2015-08-07 | 2015-12-23 | 浪潮电子信息产业股份有限公司 | 一种元数据服务器、元数据并发访问系统和方法 |
CN105471881A (zh) * | 2015-12-07 | 2016-04-06 | 北京奇虎科技有限公司 | 对请求进行加解锁方法、装置及系统 |
CN105511813A (zh) * | 2015-12-11 | 2016-04-20 | 北京奇虎科技有限公司 | 访问服务器磁盘的方法、装置及系统 |
CN107346308B (zh) * | 2016-05-04 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 一种集群系统中数据的调用方法及装置 |
CN107105064A (zh) * | 2017-06-02 | 2017-08-29 | 上海艾融软件股份有限公司 | 一种交易信息的推送方法及系统 |
CN107508881A (zh) * | 2017-08-21 | 2017-12-22 | 叶军 | 一种用于分布式文件系统的服务锁方法 |
CN108363806B (zh) * | 2018-03-01 | 2020-07-31 | 上海达梦数据库有限公司 | 数据库的多版本并发控制方法、装置、服务器及存储介质 |
CN109634665A (zh) * | 2018-11-08 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 一种数据记录并发操作请求的控制方法及装置 |
CN110032424B (zh) * | 2019-01-28 | 2023-10-20 | 创新先进技术有限公司 | 分布式锁的实现方法和装置 |
CN109947575B (zh) * | 2019-03-21 | 2021-08-24 | 恒生电子股份有限公司 | 读写锁的加锁、释放方法及相关系统 |
CN110597838A (zh) * | 2019-09-20 | 2019-12-20 | 中国银行股份有限公司 | 一种基于时间的信息系统并发控制方法、设备以及系统 |
CN110888858B (zh) * | 2019-10-29 | 2023-06-30 | 北京奇艺世纪科技有限公司 | 数据库的操作方法和装置、存储介质、电子装置 |
CN111600940B (zh) * | 2020-05-06 | 2022-11-11 | 中国银行股份有限公司 | 一种分布式会话管理方法及系统 |
-
2008
- 2008-09-24 CN CN2008101612936A patent/CN101364230B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101364230A (zh) | 2009-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101364230B (zh) | 一种并发访问控制方法及装置 | |
KR100877319B1 (ko) | 로크 및 트랜잭션 관리 방법 및 시스템 | |
US7991822B2 (en) | Propagation of updates for attributes of a storage object from an owner node of the storage object to other nodes | |
US11263048B1 (en) | Resource tolerations and taints | |
US7899895B2 (en) | Transfer of ownership of a storage object in response to an original owner node becoming available after a period of unavailability | |
AU769089B2 (en) | Server agent system | |
US5659682A (en) | Scheme to determine completion of directory operations for server recovery | |
US7778986B2 (en) | Securing transfer of ownership of a storage object from an unavailable owner node to another node | |
CN109558218A (zh) | 一种基于Redis的分布式业务数据锁实现方法 | |
US7958200B2 (en) | Methods, computer program products, and apparatuses for providing remote client access to exported file systems | |
KR101388829B1 (ko) | 운영 수단에 대한 병렬 액세스들을 위해 일시적 배타적 잠금들을 사용하기 위한 방법 및 시스템 | |
US7127722B2 (en) | Method and apparatus for avoiding multiple processing of the same IPMI system event | |
CN1606738A (zh) | 用于具有委托承诺特征的事务处理的系统和方法 | |
US9135584B2 (en) | Method and apparatus to model content state and access control in backend-systems and business processes | |
CN101772764A (zh) | 多线程业务编程库 | |
CN107992491A (zh) | 一种分布式文件系统、数据访问和数据存储的方法及装置 | |
CN104077111A (zh) | 业务操作的并发访问控制方法及装置 | |
KR20050035301A (ko) | 이종의 프로세스들을 통합하도록 적응된 데이터 프로세싱시스템 | |
US9607033B2 (en) | Supporting linked multi-user decision making in environments with constrained shared resources utilizing durable files | |
CN1276568A (zh) | 多协议统一文件锁定 | |
CN102541674A (zh) | 自主元素模型控制系统、方法及服务器受侵保护检测系统 | |
US7162394B2 (en) | Generic embedded device and mechanism thereof for various intelligent-maintenance applications | |
CN100483415C (zh) | 数据库加锁、操作的方法及装置 | |
CN113468579A (zh) | 数据访问方法、装置、设备和存储介质 | |
CN101523352A (zh) | 用于并发控制的持久锁/资源 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |