CN111131394A - 基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 - Google Patents

基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 Download PDF

Info

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
Application number
CN201911198360.6A
Other languages
English (en)
Inventor
吴珺玮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unicloud Nanjing Digital Technology Co Ltd
Original Assignee
Unicloud Nanjing Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Unicloud Nanjing Digital Technology Co Ltd filed Critical Unicloud Nanjing Digital Technology Co Ltd
Priority to CN201911198360.6A priority Critical patent/CN111131394A/zh
Publication of CN111131394A publication Critical patent/CN111131394A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request 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中任意一项所述基于分布式锁的并发请求处理方法。
CN201911198360.6A 2019-11-29 2019-11-29 基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 Pending CN111131394A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109656724A (zh) * 2018-09-27 2019-04-19 深圳壹账通智能科技有限公司 业务处理方法、装置、设备及计算机可读存储介质
CN110097330A (zh) * 2019-03-27 2019-08-06 深圳市佰仟金融服务有限公司 一种业务请求处理方法、装置及计算机可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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