CN111131394A - 基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 - Google Patents
基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111131394A CN111131394A CN201911198360.6A CN201911198360A CN111131394A CN 111131394 A CN111131394 A CN 111131394A CN 201911198360 A CN201911198360 A CN 201911198360A CN 111131394 A CN111131394 A CN 111131394A
- Authority
- CN
- China
- Prior art keywords
- request
- lock
- interface
- path information
- distributed
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5013—Request control
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于分布式锁的并发请求处理方法、装置和计算机存储介质,其中方法包括:接收客户端发送的业务请求,所述请求包括接口的路径信息,其中接口加有注解;根据所述接口的注解对所述请求进行预处理;解析所述请求中的接口的路径信息,并根据该路径信息获取锁;如果获取锁成功,则执行所述请求对应的业务,否则结束所述请求。本方案将原本对数据库的约束条件转移到代码层面,使用锁来代替对数据库事务隔离级别的设置,降低与数据库的耦合度。
Description
技术领域
本发明属于计算机领域,具体涉及一种基于分布式锁的并发请求处理方法、装置及计算机可读存储介质。
背景技术
随着互联网技术的普及,各类应用也层出不穷,用户数量的增大使得服务端的架构由传统的单机式发展到分布式。为了在分布式架构上保证高并发的安全,比如电商举办的秒杀活动中,商品不能出现超卖的现象,使用分布式锁进行处理显得很有必要。
在现有技术中,服务端获取请求后对请求进行解析,根据实际业务的需求对数据库进行对应的操作。为了保证在高并发下的数据准确,通常会通过设置数据库的事务或者添加约束实现。这种方式与数据库的耦合度较高,设置数据库的事务的隔离级别也会对数据库的吞吐量造成影响。
发明内容
针对于上述现有技术的不足,本发明的目的之一是提供一种基于分布式锁的并发请求处理方法,实现将原本对数据库的约束条件转移到代码层面,使用锁来代替对数据库事务隔离级别的设置。
本发明实施例公开了一种基于分布式锁的并发请求处理方法,包括:接收客户端发送的业务请求,所述请求包括接口的路径信息,其中接口加有注解;根据所述接口的注解对所述请求进行预处理;解析所述请求中的接口的路径信息,并根据该路径信息获取锁;如果获取锁成功,则执行所述请求对应的业务,否则结束所述请求。
在一个可能的实施例中,分布式锁包括Redis分布式锁或zookeeper分布式锁。
在一个可能的实施例中,还包括在获取锁的请求执行完后释放锁。
在一个可能的实施例中,根据所述接口的注解对所述请求进行预处理包括,采用面向切面编程的方式对所述请求进行处理。
本发明实施例还公开了一种基于分布式锁的并发请求处理装置,包括:接收模块,用于接收客户端发送的业务请求,所述请求包括接口的路径信息,其中接口加有注解;预处理模块,用于根据所述接口的注解对所述请求进行预处理;解析模块,用于解析所述请求中的接口的路径信息,并根据该路径信息获取锁;执行模块,用于如果获取锁成功,则执行所述请求对应的业务,否则结束所述请求。
在一个可能的实施例中,所述分布式锁包括Redis分布式锁,或zookeeper分布式锁。
在一个可能的实施例中,还包括释放模块,用于在获取锁的请求执行完后释放锁。
在一个可能的实施例中,所述预处理模块还用于采用面向切面编程的方式对所述请求进行处理。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述任意一项所述基于分布式锁的并发请求处理方法。
本发明的有益效果:本发明采用分布式锁的方式,对需要控制并发的接口加上注解,服务端获取到请求后进行解析,通过AOP切面的方式对请求进行预处理,以接口的请求路径作为解锁依据,避免错解锁,将原本对数据库的约束条件转移到代码层面,使用锁来代替对数据库事务隔离级别的设置,从而降低与数据库的耦合度。
附图说明
图1为本发明实施例的一种方法流程图;
图2为本发明实施例的装置结构示意图。
具体实施方式
为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。
本发明实施例中公开了一种基于分布式锁的并发请求处理方法,该方法应用在服务器端,参照图1所述方法包括:
S101, 接收客户端发送的业务请求,所述请求包括接口的路径信息,其中接口加有注解。
具体的,服务器接收客户端的多个并发业务请求并进行处理。其中并发请求处理指的是服务器端可同时接收来自不同客户端的请求任务并进行处理,当服务器端在某个时刻同时收到来自不同客户端的请求任务时,可在请求任务中选取一个请求任务并执行选取的请求任务。
S102, 根据所述接口的注解对所述请求进行预处理。具体地,采用面向切面编程的方式对所述请求进行处理,例如根据接口的注解对所述请求执行AOP操作。
在对所述请求任务可以进行加锁操作之前,对所述请求进行预处理。其中,加锁指的是为所述选取的请求任务请求分布式锁。
S103, 解析所述请求中的接口的路径信息,并根据该路径信息获取锁。具体地,在一个实施例中可以以路径信息作为Redis锁的key值,试着去获取锁,即将接口的路径信息作为关键字key进行加锁操作。
S104,如果获取锁成功,则执行所述请求对应的业务,否则结束所述请求。
具体地,分布式锁包括Redis分布式锁或zookeeper分布式锁。其中所述Redis是一个key-value存储系统,支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。
所述方法还包括在获取锁的请求执行完后释放锁,以让其他请求可以被执行。
通过上述方法,将原本对数据库的约束条件转移到代码层面,使用锁来代替对数据库事务隔离级别的设置,降低与数据库的耦合度。
如图2,本发明实施例还公开了一种基于分布式锁的并发请求处理装置10,包括:接收模块101,用于接收客户端发送的业务请求,所述请求包括接口的路径信息,其中接口加有注解;预处理模块102,用于根据所述接口的注解对所述请求进行预处理;解析模块103,用于解析所述请求中的接口的路径信息,并根据该路径信息获取锁;执行模块104,用于如果获取锁成功,则执行所述请求对应的业务,否则结束所述请求。
在一个实施例中,所述分布式锁可以是Redis分布式锁,或zookeeper分布式锁。
在一个实施例中,所述装置10还包括释放模块,用于在获取锁的请求执行完后释放锁。
在一个实施例中,所述预处理模块102还用于采用面向切面编程的方式对所述请求进行处理。
装置10具体的实施方式可以参考方法实施例,不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统, 或一些特征可以忽略,或不执行。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。
Claims (9)
1.一种基于分布式锁的并发请求处理方法,其特征在于,包括:
接收客户端发送的业务请求,所述请求包括接口的路径信息,其中接口加有注解;
根据所述接口的注解对所述请求进行预处理;
解析所述请求中的接口的路径信息,并根据该路径信息获取锁;
如果获取锁成功,则执行所述请求对应的业务,否则结束所述请求。
2.如权利要求1所述的方法,其特征在于,分布式锁包括Redis分布式锁或zookeeper分布式锁。
3.如权利要求1所述的方法,其特征在于,还包括在获取锁的请求执行完后释放锁。
4.如权利要求1所述的方法,其特征在于,根据所述接口的注解对所述请求进行预处理包括,采用面向切面编程的方式对所述请求进行处理。
5.一种基于分布式锁的并发请求处理装置,其特征在于,包括:接收模块,用于接收客户端发送的业务请求,所述请求包括接口的路径信息,其中接口加有注解;预处理模块,用于根据所述接口的注解对所述请求进行预处理;解析模块,用于解析所述请求中的接口的路径信息,并根据该路径信息获取锁;执行模块,用于如果获取锁成功,则执行所述请求对应的业务,否则结束所述请求。
6.如权利要求5所述的装置,其特征在于,所述分布式锁包括Redis分布式锁,或zookeeper分布式锁。
7.如权利要求5所述的装置,其特征在于,还包括释放模块,用于在获取锁的请求执行完后释放锁。
8.如权利要求5所述的装置,其特征在于,所述预处理模块还用于采用面向切面编程的方式对所述请求进行处理。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4中任意一项所述基于分布式锁的并发请求处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911198360.6A CN111131394A (zh) | 2019-11-29 | 2019-11-29 | 基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911198360.6A CN111131394A (zh) | 2019-11-29 | 2019-11-29 | 基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111131394A true CN111131394A (zh) | 2020-05-08 |
Family
ID=70497072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911198360.6A Pending CN111131394A (zh) | 2019-11-29 | 2019-11-29 | 基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111131394A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463810A (zh) * | 2020-12-08 | 2021-03-09 | 佳讯飞鸿(北京)智能科技研究院有限公司 | 基于分布式事务的数据处理方法、装置、设备及存储介质 |
CN113407553A (zh) * | 2021-05-14 | 2021-09-17 | 重庆锐云科技有限公司 | 一种分布式锁的实现方法、系统、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656724A (zh) * | 2018-09-27 | 2019-04-19 | 深圳壹账通智能科技有限公司 | 业务处理方法、装置、设备及计算机可读存储介质 |
CN110097330A (zh) * | 2019-03-27 | 2019-08-06 | 深圳市佰仟金融服务有限公司 | 一种业务请求处理方法、装置及计算机可读存储介质 |
-
2019
- 2019-11-29 CN CN201911198360.6A patent/CN111131394A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656724A (zh) * | 2018-09-27 | 2019-04-19 | 深圳壹账通智能科技有限公司 | 业务处理方法、装置、设备及计算机可读存储介质 |
CN110097330A (zh) * | 2019-03-27 | 2019-08-06 | 深圳市佰仟金融服务有限公司 | 一种业务请求处理方法、装置及计算机可读存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463810A (zh) * | 2020-12-08 | 2021-03-09 | 佳讯飞鸿(北京)智能科技研究院有限公司 | 基于分布式事务的数据处理方法、装置、设备及存储介质 |
CN113407553A (zh) * | 2021-05-14 | 2021-09-17 | 重庆锐云科技有限公司 | 一种分布式锁的实现方法、系统、设备及存储介质 |
CN113407553B (zh) * | 2021-05-14 | 2023-05-05 | 重庆锐云科技有限公司 | 一种分布式锁的实现方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11860900B2 (en) | Log-based distributed transaction management | |
US11061884B2 (en) | Method and system to accelerate transaction commit using non-volatile memory | |
US8671085B2 (en) | Consistent database recovery across constituent segments | |
US7680793B2 (en) | Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers | |
Macedo et al. | Redis cookbook: Practical techniques for fast data manipulation | |
US8103714B2 (en) | Transactional quality of service in event stream processing middleware | |
US9747356B2 (en) | Eager replication of uncommitted transactions | |
US7716181B2 (en) | Methods, apparatus and computer programs for data replication comprising a batch of descriptions of data changes | |
US10108623B2 (en) | Merging database operations for serializable transaction execution | |
US7895172B2 (en) | System and method for writing data dependent upon multiple reads in a distributed database | |
EP3513317A1 (en) | Data serialization in a distributed event processing system | |
US20110029498A1 (en) | System and Method for Subunit Operations in a Database | |
US9772911B2 (en) | Pooling work across multiple transactions for reducing contention in operational analytics systems | |
US11347933B1 (en) | Distributed collaborative storage with operational transformation | |
US10108658B1 (en) | Deferred assignments in journal-based storage systems | |
US9535931B2 (en) | Data seeding optimization for database replication | |
CN111131394A (zh) | 基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 | |
US11983519B2 (en) | Abort installation of firmware bundles | |
US10331897B2 (en) | System and method for protecting plain text scripting language programs in a mainframe rehosting platform | |
US11816163B2 (en) | Systems and methods for improved transactional mainframes | |
US8935294B2 (en) | Minimizing computer resource usage when converting data types of a table column | |
US9009098B1 (en) | Methods and apparatus for creating a centralized data store | |
CN111127088B (zh) | 实现最终一致性的方法、装置、计算机设备及存储介质 | |
CN112948467B (zh) | 数据处理方法及装置、计算机设备和存储介质 | |
CN111831455A (zh) | 工业物联网下分布式事务处理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200508 |