CN110377614B - 一种分布式环境下的订单处理锁系统 - Google Patents

一种分布式环境下的订单处理锁系统 Download PDF

Info

Publication number
CN110377614B
CN110377614B CN201910666210.7A CN201910666210A CN110377614B CN 110377614 B CN110377614 B CN 110377614B CN 201910666210 A CN201910666210 A CN 201910666210A CN 110377614 B CN110377614 B CN 110377614B
Authority
CN
China
Prior art keywords
orders
order
node
lock system
lock
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
Application number
CN201910666210.7A
Other languages
English (en)
Other versions
CN110377614A (zh
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.)
Hangzhou Youpin Technology Co ltd
Original Assignee
Hangzhou Youpin 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 Hangzhou Youpin Technology Co ltd filed Critical Hangzhou Youpin Technology Co ltd
Priority to CN201910666210.7A priority Critical patent/CN110377614B/zh
Publication of CN110377614A publication Critical patent/CN110377614A/zh
Application granted granted Critical
Publication of CN110377614B publication Critical patent/CN110377614B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种分布式环境下的订单处理锁系统。每个节点,会开一个事务,要么全成功,要么全失败,当多个节点处理一批订单时,有可能多个节点会获取到相同的订单,因此,可能导致a节点处理的订单全成功,b节点处理的订单全失败,需要重新处理,浪费资源的情况,本发明能避免该种情况的发生。

Description

一种分布式环境下的订单处理锁系统
技术领域
本发明涉及一种分布式环境下的订单处理锁系统。
背景技术
现如今,电子商务快速发展,在大促期间,大量订单会瞬间到达系统,使得系统有大量订单要处理。为了提高客户体验,也顺应各平台的时效策略,这些订单,必须在规定的时间内尽快处理完成。
但,服务器单机性能很容易达到上限。因此,考虑使用分布式环境来处理订单。
为了提高性能,所以我们会批量(比如100单)处理订单。
在分布式环境下,各个服务节点,先从数据库中,获取100个未处理的订单,然后处理订单,再标记为已处理。该批订单,在1个事务中。因此,要么全部成功,要么全部失败。
当2个节点同时获取到某个订单,且同时处理,会造成重复处理订单的问题。为了避免订单被重复处理,我们会有乐观锁机制,去处理该问题,以保证,1个订单,只能被1个服务节点处理。这样的话,就会导致,a服务节点,获取了100个订单。但因为b服务节点,获取到这100单中的其中1单,且处理成功。进而导致,a服务节点,100个订单都处理失败。实际上,剩余的99个订单,都可以成功。
上述,因为1个订单,导致剩余99个订单一起处理失败,又要重新处理,非常浪费资源。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种分布式环境下的订单处理锁系统的技术方案。
所述的一种分布式环境下的订单处理锁系统,其特征在于:
设a节点:取一台服务器,安装操作系统,部署环境;
设b节点:取一台服务器,安装操作系统,部署环境;
数据库:取一台服务器,安装操作系统,部署数据库;
锁系统:取一台服务器,安装操作系统,部署redis实例;
上锁操作:redis是一个key/value类型的数据库,key不能重复;通过命令setorderId random_value NX EX 300来给订单上锁,其中,orderId指订单号,random_value是一个随机数,NX代表只有orderId不存在的时候才设置,EX 300代表300秒后,orderId会过期,即锁会自动释放;执行上述命令,返回成功,代表给订单orderId上了一把锁,这把锁的有效期是300秒;当在300秒有效期内,再次执行该命令时,会返回失败,代表上锁失败;
启动系统,订单持续导入到数据库中,在系统中运转起来;
a节点,从数据库中,获取100个未处理订单,包含订单a;将这100个订单,发送到锁系统中,进行过滤,如果未在锁系统中存在,则在锁系统注册,进行订单锁定;如果已经在锁系统中存在,则过滤,返回锁系统中新注册锁定的100个订单,包含订单a;
b节点,从数据库中,获取100个未处理订单,包含订单a;将这100个订单,发送到锁系统中,进行过滤,如果未在锁系统中存在,则在锁系统注册,进行订单锁定;如果已经在锁系统中存在,则过滤,返回锁系统中新注册锁定的99个订单,订单a因为已被a节点注册锁定,所以b节点访问时,被过滤;
之后,处理订单正常业务逻辑;
a节点,100个订单,处理成功;
b节点,99个订单,处理成功;
a节点,释放100个订单的锁;
b节点,释放99个订单的锁。
所述的一种分布式环境下的订单处理锁系统,其特征在于所述锁系统是基于redis实现的,redis是一个key/value存储系统,key是string类型,value支持数据类型包括string字符串,list链表,set集合,zset有序集合。
本发明设计了一种分布式环境下订单处理的锁系统,每个节点,会开一个事务,要么全成功,要么全失败,当多个节点处理一批订单时,有可能多个节点会获取到相同的订单,因此,可能导致a节点处理的订单全成功,b节点处理的订单全失败,需要重新处理,浪费资源的情况,本发明能避免该种情况的发生。
附图说明
图1为本发明锁系统设计架构图。
具体实施方式
下面结合说明书附图对本发明作进一步说明:
一种分布式环境下的订单处理锁系统,
设a节点:取一台服务器,安装操作系统,部署环境;
设b节点:取一台服务器,安装操作系统,部署环境;
数据库:取一台服务器,安装操作系统,部署数据库;
锁系统:取一台服务器,安装操作系统,部署redis实例;
上锁操作:redis是一个key/value类型的数据库,key不能重复;通过命令setorderId random_value NX EX 300来给订单上锁,其中,orderId指订单号,random_value是一个随机数,NX代表只有orderId不存在的时候才设置,EX 300代表300秒后,orderId会过期,即锁会自动释放;执行上述命令,返回成功,代表给订单orderId上了一把锁,这把锁的有效期是300秒;当在300秒有效期内,再次执行该命令时,会返回失败,代表上锁失败;
启动系统,订单持续导入到数据库中,在系统中运转起来;
a节点,从数据库中,获取100个未处理订单,包含订单a;将这100个订单,发送到锁系统中,进行过滤,如果未在锁系统中存在,则在锁系统注册,进行订单锁定;如果已经在锁系统中存在,则过滤,返回锁系统中新注册锁定的100个订单,包含订单a;
b节点,从数据库中,获取100个未处理订单,包含订单a;将这100个订单,发送到锁系统中,进行过滤,如果未在锁系统中存在,则在锁系统注册,进行订单锁定;如果已经在锁系统中存在,则过滤,返回锁系统中新注册锁定的99个订单,订单a因为已被a节点注册锁定,所以b节点访问时,被过滤;
之后,处理订单正常业务逻辑;
a节点,100个订单,处理成功;
b节点,99个订单,处理成功;
a节点,释放100个订单的锁;
b节点,释放99个订单的锁。
本发明的锁系统是基于redis实现的,redis是一个key/value存储系统,key是string类型,value支持数据类型包括string字符串、list链表、set集合、zset有序集合等。
本发明设计了一种分布式环境下订单处理的锁系统,每个节点,会开一个事务,要么全成功,要么全失败,当多个节点处理一批订单时,有可能多个节点会获取到相同的订单,因此,可能导致a节点处理的订单全成功,b节点处理的订单全失败,需要重新处理,浪费资源的情况,本发明能避免该种情况的发生。
名词解释:
操作系统(英语:Operating System,缩写:OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
分布式系统(简称:分布式):分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。
数据库,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。
数据库事务(简称:事务):是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
数据库事务拥有以下四个特性,习惯上被称之为ACID特性:
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行;
一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态;一致状态的含义是数据库中的数据应满足完整性约束;
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行;
持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。
乐观并发控制:在关系数据库管理系统里,乐观并发控制(又名“乐观锁”,Optimistic Concurrency Control,缩写“OCC”)是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。
乐观并发控制多数用于数据争用不大、冲突较少的环境中,这种环境中,偶尔回滚事务的成本会低于读取数据时锁定数据的成本,因此可以获得比其他并发控制方法更高的吞吐量。
互斥锁(英语:Mutual exclusion,缩写Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行访问的代码,并非一种机制或是算法。一个程序、进程、线程可以拥有多个临界区域,但是并不一定会应用互斥锁。
悲观并发控制:在关系数据库管理系统里,悲观并发控制(又名“悲观锁”,Pessimistic Concurrency Control,缩写“PCC”)是一种并发控制的方法。它可以阻止一个事务以影响其他用户的方式来修改数据。如果一个事务执行的操作读某行数据应用了锁,那只有当这个事务把锁释放,其他事务才能够执行与该锁冲突的操作。
悲观并发控制主要用于数据争用激烈的环境,以及发生并发冲突时使用锁保护数据的成本要低于回滚事务的成本的环境中。
Redis:Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。从2015年6月开始,Redis的开发由Redis Labs赞助,而2013年5月至2015年6月期间,其开发由Pivotal赞助。在2013年5月之前,其开发由VMware赞助。根据月度排行网站DB-Engines.com的数据,Redis是最流行的键值对存储数据库。

Claims (1)

1.一种分布式环境下的订单处理锁系统,其特征在于:
设a节点:取一台服务器,安装操作系统,部署环境;
设b节点:取一台服务器,安装操作系统,部署环境;
数据库:取一台服务器,安装操作系统,部署数据库;
锁系统:取一台服务器,安装操作系统,部署redis实例;
上锁操作:redis是一个key/value类型的数据库,key不能重复;通过命令 setorderId random_value NX EX 300 来给订单上锁,其中,orderId指订单号,random_value是一个随机数,NX代表只有orderId不存在的时候才设置,EX 300代表300秒后,orderId会过期,即锁会自动释放;执行上述命令,返回成功,代表给订单orderId上了一把锁,这把锁的有效期是300秒;当在300秒有效期内,再次执行该命令时,会返回失败,代表上锁失败;
启动系统,订单持续导入到数据库中,在系统中运转起来;
a节点,从数据库中,获取100个未处理订单,包含订单a;将这100个订单,发送到锁系统中,进行过滤,如果未在锁系统中存在,则在锁系统注册,进行订单锁定;如果已经在锁系统中存在,则过滤,返回锁系统中新注册锁定的100个订单,包含订单a;
b节点,从数据库中,获取100个未处理订单,包含订单a;将这100个订单,发送到锁系统中,进行过滤,如果未在锁系统中存在,则在锁系统注册,进行订单锁定;如果已经在锁系统中存在,则过滤,返回锁系统中新注册锁定的99个订单,订单a因为已被a节点注册锁定,所以b节点访问时,被过滤;
之后,处理订单正常业务逻辑;
a节点,100个订单,处理成功;
b节点,99个订单,处理成功;
a节点,释放100个订单的锁;
b节点,释放99个订单的锁;
所述锁系统是基于redis实现的,redis是一个key/value存储系统,key是string类型,value支持数据类型包括 string字符串,list链表,set集合,zset有序集合。
CN201910666210.7A 2019-07-23 2019-07-23 一种分布式环境下的订单处理锁系统 Active CN110377614B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910666210.7A CN110377614B (zh) 2019-07-23 2019-07-23 一种分布式环境下的订单处理锁系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910666210.7A CN110377614B (zh) 2019-07-23 2019-07-23 一种分布式环境下的订单处理锁系统

Publications (2)

Publication Number Publication Date
CN110377614A CN110377614A (zh) 2019-10-25
CN110377614B true CN110377614B (zh) 2023-12-01

Family

ID=68255098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910666210.7A Active CN110377614B (zh) 2019-07-23 2019-07-23 一种分布式环境下的订单处理锁系统

Country Status (1)

Country Link
CN (1) CN110377614B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112766956A (zh) * 2021-03-19 2021-05-07 中国工商银行股份有限公司 基于分布式订单系统的订单支付控重方法及装置
CN113778697B (zh) * 2021-09-14 2023-05-23 福建天晴数码有限公司 一种实现redis分布锁高可用的方法及其系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271437B2 (en) * 2008-07-28 2012-09-18 International Business Machines Corporation Managing locks across distributed computing nodes
CN105630913A (zh) * 2015-12-22 2016-06-01 福建星海通信科技有限公司 一种基于Redis管道通信的消息传递方法及系统
CN106060060A (zh) * 2016-06-22 2016-10-26 努比亚技术有限公司 客户端获取锁的方法及系统

Also Published As

Publication number Publication date
CN110377614A (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
US11243920B2 (en) Distributed database system, transaction processing method, lock server and storage medium
US11061884B2 (en) Method and system to accelerate transaction commit using non-volatile memory
CN107077382B (zh) 在多租户应用服务器环境中进行事务恢复的系统和方法
Ren et al. Slog: Serializable, low-latency, geo-replicated transactions
US11132350B2 (en) Replicable differential store data structure
JP4603546B2 (ja) 効率的なバージョン制御を有するデータベース管理システム
JP5259404B2 (ja) データベースフラグメントのクローン化および管理
US10585874B2 (en) Locking concurrent commands in a database management system
US20190129894A1 (en) Database Transaction Processing Method, Client, and Server
CN108509462B (zh) 一种同步活动事务表的方法及装置
CN104793988A (zh) 跨数据库分布式事务的实现方法和装置
CN107533474B (zh) 一种事务处理方法及装置
EP4189914B1 (en) Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems
CN110377614B (zh) 一种分布式环境下的订单处理锁系统
EP3824397B1 (en) Version-based table locking
JP2004164594A (ja) 長時間のトランザクションを管理する方法およびシステム
EP3853715A1 (en) Techniques for updating big data tables using snapshot isolation
US10740320B2 (en) Systems and methods of operation lock management and system catalog overrides in database systems
US7523088B2 (en) Method for increasing system resource availability in database management systems
CN111240891A (zh) 基于数据库多表间数据一致性的数据恢复方法及装置
US7734604B1 (en) Locking data in a database after an operation has begun
US10459810B2 (en) Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery
JP6784296B2 (ja) データベース管理装置、データベース管理方法、及びプログラム
US10417214B2 (en) Non-transitory computer-readable storage medium, database control method and database control device
US7209919B2 (en) Library server locks DB2 resources in short time for CM implicit transaction

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
TA01 Transfer of patent application right

Effective date of registration: 20231102

Address after: Room 426, Building 6, No. 600, 21st Street, Baiyang Street, Qiantang New District, Hangzhou City, Zhejiang Province, 310018

Applicant after: Hangzhou Youpin Technology Co.,Ltd.

Address before: Room 217, Building 6, No. 600, 21st Street, Baiyang Street, Economic and Technological Development Zone, Hangzhou City, Zhejiang Province, 310018

Applicant before: Hangzhou Meiba Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant