CN117541356A - 一种订单执行方法、系统、电子设备和存储介质 - Google Patents
一种订单执行方法、系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117541356A CN117541356A CN202311650879.XA CN202311650879A CN117541356A CN 117541356 A CN117541356 A CN 117541356A CN 202311650879 A CN202311650879 A CN 202311650879A CN 117541356 A CN117541356 A CN 117541356A
- Authority
- CN
- China
- Prior art keywords
- task
- order
- consumption process
- target
- target consumption
- 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
- 238000000034 method Methods 0.000 title claims abstract description 225
- 238000003860 storage Methods 0.000 title claims abstract description 17
- 230000008569 process Effects 0.000 claims abstract description 179
- 238000004590 computer program Methods 0.000 claims description 16
- 238000009826 distribution Methods 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 abstract description 5
- 238000009825 accumulation Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000012384 transportation and delivery Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 239000003814 drug Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 229940079593 drug Drugs 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Data Mining & Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种订单执行方法、系统、电子设备和存储介质,在Redis数据库接收到订单的任务ID时,判断Redis数据库中是否存在与订单对应的任务队列;若是,将任务ID添加至任务队列的末端;若否,根据订单的订单号生成任务队列,将任务ID添加至任务队列;针对每个订单,确定与订单对应的目标消费进程;将订单对应的任务队列中的任务ID发送给目标消费进程;按照任务ID的排列顺序在目标消费进程中执行对应的任务。按照任务ID的排列顺序在目标消费进程中执行对应的任务,即使订单数据庞大,也可以保障每个订单能够按任务的先后顺序执行,大大增加了生产能力,避免订单事件堆积。
Description
技术领域
本发明涉及订单执行技术领域,尤其涉及一种订单执行方法、系统、电子设备和存储介质。
背景技术
目前订单事件消费,是通过定时任务,定时轮询数据库取出一批事件数据,并按订单号分组,同个订单的多个任务交由一个线程顺序执行。等所有线程执行完之后,提取下一批数据。当启用多进程时,需要对每个进程设置序号,再根据订单号取模,每次进程只能提取订单号取模和序号对应的数据。这种问题会造成数据不均,有的进程需要处理的数据多,有的进程却没多少数据需要执行。并且每次加一个进程,都得调整分配规则来重新分配订单,导致效率低下。
当订单量增大、待执行的订单事件剧增时,订单事件的消费能力不及生产能力,导致订单事件堆积。
发明内容
本发明提供了一种订单执行方法,以解决订单执行的问题。
第一方面,本发明提供了一种订单执行方法,应用于订单执行系统,订单执行系统设置有Redis数据库和多个消费进程,每个所述消费进程包括多个业务线程;所述订单执行控制方法包括:
在所述Redis数据库接收到订单的任务ID时,判断所述Redis数据库中是否存在与所述订单对应的任务队列;
若是,将所述任务ID添加至所述任务队列的末端;
若否,根据所述订单的订单号生成所述任务队列,将所述任务ID添加至所述任务队列;
针对每个所述订单,确定与所述订单对应的目标消费进程;
将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程;
按照所述任务ID的排列顺序在所述目标消费进程中执行对应的任务。
第二方面,本发明提供了一种订单执行系统,所述订单执行系统设置有Redis数据库和多个消费进程,每个所述消费进程包括多个业务线程;
所述订单执行系统包括:
任务队列判断模块,用于在所述Redis数据库接收到订单的任务ID时,判断所述Redis数据库中是否存在与所述订单对应的任务队列;若是,执行第一添加模块的内容,若否,执行第二添加模块的内容;
第一添加模块,用于将所述任务ID添加至所述任务队列的末端;
第二添加模块,用于根据所述订单的订单号生成所述任务队列,将所述任务ID添加至所述任务队列;
目标消费进程确定模块,用于针对每个所述订单,确定与所述订单对应的目标消费进程;
任务发送模块,用于将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程;
任务执行模块,用于按照所述任务ID的排列顺序在所述目标消费进程中执行对应的任务。
第三方面,本发明提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明第一方面所述的订单执行方法。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明第一方面所述的订单执行方法。
本发明实施例通提供了一种订单执行方法,应用于订单执行系统,订单执行系统设置有Redis数据库和多个消费进程,每个消费进程包括多个业务线程;订单执行控制方法包括:在Redis数据库接收到订单的任务ID时,判断Redis数据库中是否存在与订单对应的任务队列;若是,将任务ID添加至任务队列的末端;若否,根据订单的订单号生成任务队列,将任务ID添加至任务队列;针对每个订单,确定与订单对应的目标消费进程;将订单对应的任务队列中的任务ID发送给目标消费进程;按照任务ID的排列顺序在目标消费进程中执行对应的任务。
第一,由于Redis数据库接收到订单的任务ID,是将任务ID按照先来后到的顺序排列于任务队列中,在后续的任务执行过程中,也是按照任务ID的排列顺序在目标消费进程中执行对应的任务,即使订单数据庞大,也可以保障每个订单能够按任务的先后顺序执行。
第二,由于设置有多个消费进程,每个消费进程至少可以处理一个订单的任务,即使一个消费进程同时处理两个以上的订单的任务,不同的订单的任务执行过程是相互独立的,有利于提高消费订单的速度和效率,大大增加了生产能力,避免订单事件堆积。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种订单执行方法的流程图;
图2是本发明实施例一提供的一种订单物流分配总系统的架构示意图;
图3是本发明实施例一提供的一种Redis数据库结构示意图;
图4是本发明实施例二提供的一种订单执行方法的流程图;
图5是本发明实施例三提供的一种订单执行系统的结构示意图;
图6是本发明实施例四提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
名词解释:
Redis:是一个开源的使用ANSIC语言编写的高性能、易于扩容的键值对缓存数据库。
在本发明方案的实现过程,利用了Redis的以下数据类型和相关特性:
1、Zset:是一种使用分数(score)来进行排序的集合数据结构。zset是Redis提供的最具特色的数据类型之一,首先它是一个set,这保证了内部value值的唯一性,其次它给每个value添加了一个score(分值)属性,通过对分值的排序实现了有序化。
Zset在Redis中的执行具有以下特性:
有序性:每个元素都有一个与之关联的分数(score),根据分数对元素进行排序。
唯一性:有序集合中的元素是唯一的,每个元素通过成员(member)来唯一标识
2、List:是一种存储有序元素的数据结构。
List在Redis中的执行具有以下特性:
有序性:列表中的元素按照它们被添加的顺序进行存储,并且每个元素都可以通过索引进行访问。可以根据元素在列表中的位置来实现先进先出(FIFO)的行
3、Lua:是一个轻量级的脚本语言,可以很方便地内置于Redis中,可以很容易地被C/C++代码调用,也可以反过来调用C/C++的函数。
Lua脚本在Redis中的执行具有以下特性:
原子性:脚本的执行是原子的,Redis在执行整个脚本期间会保持单线程执行,确保不会被其他客户端的命令中断。
执行效率:一旦脚本被Redis缓存起来,再次执行同样的脚本时不需要重新解析和编译,提高了执行的效率。
数据处理:脚本可以在Redis服务器端执行,可以直接操作Redis中的数据,减少数据的网络传输。
参数传递:可以向脚本传递参数,让脚本根据不同情况执行不同的操作。
实施例一
图1为本发明实施例一提供的一种订单执行方法的流程图,本实施例可适用于对药品商城中的订单进行执行的情况。图2为一种订单物流分配总系统的架构示意图,如图2所示,在系统层面来说,商城端10、订单执行系统11、ERP(Enterprise Resource Planning,企业资源计划)系统12依次连接。需要说明的是,商城端10是药品商城的商城端。该订单执行方法可以由订单执行系统11来执行,具体可以是由订单执行系统11中的控制器来执行。
其中,商城端是订单的来源端,客户从app、小程序、PC端等平台下单。订单数据会在商城端生成,商城会将订单的创建,收到付款,订单取消事件推送给订单执行系统,订单执行系统主要是执行订单合规性校验,物流分配,客服跟进的操作行为,是完整展示订单生命周期的系统。需要同步商城订单状态和订单ERP出库状态。订单执行系统会在订单合规性校验通过后通知ERP系统创建出库单,ERP系统是执行订单商品发货流程,库存不足或者订单不符合发货规则,会返单回订单执行系统。同时ERP系统会将订单相关发货流程的事件推送给订单执行系统。
订单系统通过订单执行系统来串接订单创建、审核、发货全流程,因此有需要快速响应各端推送的订单事件。若响应不及时会产生,商城的订单没办法出库,客服无跟进的订单,订单的出库情况无法写回商城端。因此,本发明提供了一种订单执行方法,可以使得订单执行系统可以快速推送订单事件。
该订单执行方法可以应用于订单执行系统,订单执行系统设置有Redis数据库和多个消费进程,每个消费进程包括多个业务线程,该订单执行系统可以采用硬件和/或软件的形式实现,该订单执行系统可配置于电子设备中。如图1所示,该订单执行方法包括:
S101、在Redis数据库接收到订单的任务ID时,判断Redis数据库中是否存在与订单对应的任务队列。
若是,则执行S102,若否,则执行S103。
订单的任务ID由商城端进行发送至订单执行系统。
图3为一种Redis数据库结构示意图,如图3所示,在Redis数据库中,包括Zset队列和List队列A,Zset队列用于顺序放置订单号。Redis数据库可以同时接收多个订单,由于Zset具备有序性,每个订单号可以具备一个与之关联的分数(score),根据分数对订单号进行排序,分数即订单的订单到达Redis数据库的时间,到达时间越早,分数越低,排序越靠前,到达时间越晚,分数越高,排序越靠后。List队列A用于放置每个订单(的订单号)对应的任务队列。一个订单包括多个任务,每个任务对应一个任务ID。一个订单的任务ID可能是一次性发送到Redis数据库,也可能是分批次发送到Redis数据库。
S102、将任务ID添加至任务队列的末端。
当Redis数据库中存在与订单对应的任务队列,说明该订单并非新加入的订单,在先已经接收过该订单的任务ID,且该订单的任务尚未执行完毕。由于List队列具备有序性,那么任务队列中任务ID的排序也具备有序性,在已经存在任务队列的情况下,将任务ID添加至任务队列的末端,则使得先到的任务ID排序靠前,后到的任务ID排序靠后,具备有序性。
S103、根据订单的订单号生成任务队列,将任务ID添加至任务队列。
当Redis数据库中不存在与订单对应的任务队列,说明该订单是新加入的订单,Redis数据库中尚未建立对应的任务队列,因此,可以根据订单的订单号生成任务队列,将任务ID添加至任务队列。此时添加的任务ID是任务队列中的第一个元素。
S104、针对每个订单,确定与订单对应的目标消费进程。
由于存在多个消费进程,每个消费进程之间的工作是相互独立的,为了保障每个订单中的任务有序执行、减小方案复杂度和算力资源,设置每个订单放置在唯一的一个消费进程中进行处理。
由于每个消费进程可以同时处理一件以上的订单事件,在订单量巨大时,为了充分利用各个消费进程的消费力,提高订单消费速度和效率,可以将接收到的订单事件均匀地分配给各个消费进程,避免出现部分消费进程堆积大量订单而部分消费进程空闲的情况。具体地,可以计算当前所有的消费进程中占用资源,将占用资源最小的消费进程作为目标消费进程。
在一个可选的实施例中,针对每个订单,确定与订单对应的目标消费进程,包括:判断是否存在与订单对应的消费进程;若是,将与订单对应的消费进程作为目标消费进程;若否,基于平均分配原则对消费进程分配订单,将订单分配到的消费进程作为目标消费进程。
S105、将订单对应的任务队列中的任务ID发送给目标消费进程。
在确定目标消费进程后,可以将订单对应的任务队列中的所有任务ID发送给目标消费进程,具体地,是发给目标消费进程中的一个空闲的业务线程。
S106、按照任务ID的排列顺序在目标消费进程中执行对应的任务。
按照任务ID的排列顺序在目标消费进程中执行对应的任务,例如,任务ID的排列顺序从前往后为:X1、X2、X3、X4,那么执行任务时,先执行任务ID为X1的任务,再执行任务ID为X2的任务,以此类推,保障了订单的任务能够被有序执行。
需要说明的是,本实施例中存在多个消费进程,消费进程之间相互独立,不同订单的任务执行过程也相互独立,即使其中一个消费进程或一个订单的执行过程较慢或出现异常时,对执行其他订单的影响程度也较小,可以大大提高消费订单的效率,大大增加了生产能力,避免订单事件堆积。
本发明实施例提供了一种订单执行方法,应用于订单执行系统,订单执行系统包括Redis数据库和多个消费进程,每个消费进程包括多个业务线程;订单执行控制方法包括:在Redis数据库接收到订单的任务ID时,判断Redis数据库中是否存在与订单对应的任务队列;若是,将任务ID添加至任务队列的末端;若否,根据订单的订单号生成任务队列,将任务ID添加至任务队列;针对每个订单,确定与订单对应的目标消费进程;将订单对应的任务队列中的任务ID发送给目标消费进程;按照任务ID的排列顺序在目标消费进程中执行对应的任务。第一,由于Redis数据库接收到订单的任务ID,是将任务ID按照先来后到的顺序排列于任务队列中,在后续的任务执行过程中,也是按照任务ID的排列顺序在目标消费进程中执行对应的任务,即使订单数据庞大,也可以保障每个订单能够按任务的先后顺序执行。第二,由于设置有多个消费进程,每个消费进程至少可以处理一个订单的任务,即使一个消费进程同时处理两个以上的订单的任务,不同的订单的任务执行过程是相互独立的,有利于提高消费订单的速度和效率,大大增加了生产能力,避免订单事件堆积。
实施例二
图4为本发明实施例二提供的一种订单执行方法的流程图,本发明实施例在上述实施例一的基础上进行优化,如图4所示,该订单执行方法包括:
S401、在Redis数据库接收到订单的任务ID时,判断Redis数据库中是否存在与订单对应的任务队列。
若是,则执行S402,若否,则执行S40。
S402、将任务ID添加至任务队列的末端。
S403、根据订单的订单号生成任务队列,将任务ID添加至任务队列。
S404、针对每个订单,确定与订单对应的目标消费进程。
S401-S404与实施例一中的S101-S104相似,具体可以参考S101-S104的相关内容,在此不加以描述。
S405、判断目标消费进程当前是否正在执行订单的任务。
判断目标消费进程当前是否正在执行订单的任务,是为了判断目标消费进程中是否正在处理在先进入其中的该订单的任务,若仍有正在执行的该订单的任务,当前订单的新的任务添加到目标消费进程后,由于目标消费进程中存在多个业务线程,若是当前即由其他的业务线程来处理当前的任务,不同的业务线程之间也是相互独立的,则无法保证能够被订单的所有任务能够有序执行。另一方面,若是将该订单的所有任务都堆积给同一个业务线程,则也可能出现其他业务线程空闲的情况,这种情况下则降低了业务线程的使用效率,同时也降低了订单的处理效率。此外,若是将该订单发送给不同的消费进程,那么每次发送任务时,需要遍历所有的消费进程,则增加了算力资源和运行速度,可能降低订单的处理效率。因此,在发送订单的任务ID之前,判断目标消费进程当前是否正在执行订单的任务,若否,执行S406,若是则继续执行当前步骤。
S406、检测目标消费进程中是否存在空闲的业务线程。
由于订单与目标消费进程是一一对应的关系,即仅一个目标消费订单处理该订单,在目标消费进程当前并非正在执行订单的任务时,可以确定该订单在先的任务已经被执行完毕了,此时若是将新的任务的任务ID发给该目标消费进程,则可以保障任务有序完成,即在先的任务先完成,在后的任务后完成。
为了避免任务等待和堵塞,先检测目标消费进程中是否存在空闲的业务线程,若是,执行S407,若否则继续执行当前步骤。
S407、将订单对应的任务队列中的任务ID发送给目标消费进程。
当目标消费进程中存在空闲的业务线程时,即可以将订单对应的任务队列中的任务ID发送给目标消费进程。这里需要说明的是,订单与目标消费进程是一一对应的关系,但同一个订单的任务可以在一个目标消费进程中不同业务线程中被执行,由于是在目标消费进程中没有该订单的任务时,才发送该订单的任务ID,可以保障订单的任务有序执行。
具体地,将目标消费进程中任一空闲的业务线程作为目标业务线程,将订单对应的任务队列中的任务ID发送给目标业务线程。
由上述的步骤可知,当任务ID发送到任务队列时,不一定立即能发送给对应的目标消费进程,可能还会站在任务队列中进行等待,那么任务队列中也可能堆积了在不同时刻接收的(不同批次的)任务ID。
S408、将任务ID从任务队列删除。
在将任务队列中已有的任务ID发送给目标消费进程后,便可以将任务ID从任务队列删除。等到该订单的下一批任务的任务ID发送Redis数据库时,又将发送到该任务队列中。
S409、按照任务ID的排列顺序在目标消费进程中执行对应的任务。
Redis数据库中存储有与任务ID对应的任务执行数据,任务执行数据可以与任务ID在同一时刻发送至Redis数据库,任务执行数据是执行任务时所需的数据。假设任务是组装一个产品,任务执行数据是产品部件,目标消费进程是工厂,业务线程是工人,那么工人获取产品部件来进行组装,得到组装好的产品,业务线程获取任务执行数据来执行任务,即完成该任务。
具体地,可以将目标消费进程中剩余的、排序最靠前的订单的任务ID作为目标ID;根据目标ID从Redis数据库获取对应的任务执行数据并发送至目标消费进程;目标消费进程基于任务执行数据执行目标ID对应的任务;将目标ID从目标消费进程中删除;判断目标消费进程中是否存在任务ID,若是,返回将目标消费进程中剩余的、排序最靠前的订单的任务ID作为目标ID的步骤;若否,确定目标消费进程中订单的任务执行完毕。
在一个可选的实施例中,在确定目标消费进程中订单的任务执行完毕之后,还包括:将Redis数据库中订单对应的任务队列删除。
在一个可选的实施例中,redis数据库中设置有定时器,用于监测每个订单的等待时长,订单执行方法还包括:判断是否存在等待时长超过预设时长的订单;若是,将订单对应的订单号从Zset队列移至异常队列中。如图3所示,List队列B即为异常队列,用于放置异常订单的订单号。
在一个可选的实施例中,对于异常队列中的订单号,获取异常队列中的订单号,进行批量重置,即重新执行这些异常订单,在异常订单重新执行且执行成功后,将异常订单的订单号从List队列B中删除并添加到Zset队列中。
本实施例在将订单对应的任务队列中的任务ID发送给目标消费进程之前,目标消费进程当前未执行订单的任务时,检测目标消费进程中是否存在空闲的业务线程;当目标消费进程中存在空闲的业务线程时,执行将订单对应的任务队列中的任务ID发送给目标消费进程的步骤。可以保障订单的任务有序完成,也可以保障能够高效执行任务。
实施例三
图5为本发明实施例三提供的一种订单执行系统的结构示意图。如图5所示,该订单执行系统设置有Redis数据库和多个消费进程,每个所述消费进程包括多个业务线程;
所述订单执行系统包括:
任务队列判断模块501,用于在所述Redis数据库接收到订单的任务ID时,判断所述Redis数据库中是否存在与所述订单对应的任务队列;若是,执行第一添加模块的内容,若否,执行第二添加模块的内容;
第一添加模块502,用于将所述任务ID添加至所述任务队列的末端;
第二添加模块503,用于根据所述订单的订单号生成所述任务队列,将所述任务ID添加至所述任务队列;
目标消费进程确定模块504,用于针对每个所述订单,确定与所述订单对应的目标消费进程;
任务发送模块505,用于将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程;
任务执行模块506,用于按照所述任务ID的排列顺序在所述目标消费进程中执行对应的任务。
在一个可选的实施例中,所述目标消费进程确定模块504,包括:
消费进程判断子模块,用于判断是否存在与所述订单对应的消费进程;若是,执行第一确定子模块的内容,若否,执行第二确定子模块的内容
第一确定子模块,用于将与所述订单对应的消费进程作为目标消费进程;
第二确定子模块,用于基于平均分配原则对消费进程分配所述订单,将所述订单分配到的消费进程作为目标消费进程。
在一个可选的实施例中,所述订单执行系统还包括:
任务执行状态判断模块,用于判断所述目标消费进程当前是否正在执行所述订单的任务;若否执行空闲线程判断模块的内容,
空闲线程判断模块,用于检测所述目标消费进程中是否存在空闲的业务线程;若是,执行任务发送模块505的内容。
在一个可选的实施例中,所述任务发送模块505,包括:
目标业务线程确定子模块,用于将所述目标消费进程中任一空闲的业务线程作为目标业务线程;
任务发送子模块,用于将所述订单对应的所述任务队列中的所述任务ID发送给所述目标业务线程。
在一个可选的实施例中,所述订单执行系统还包括:
任务ID删除模块,用于将所述任务ID从所述任务队列删除。
在一个可选的实施例中,所述Redis数据库中存储有与所述任务ID对应的任务执行数据,所述任务执行模块506,包括:
第一子模块,用于将所述目标消费进程中剩余的、排序最靠前的所述订单的所述任务ID作为目标ID;
第二子模块,用于根据所述目标ID从所述Redis数据库获取对应的任务执行数据并发送至所述目标消费进程;
第三子模块,用于所述目标消费进程基于所述任务执行数据执行所述目标ID对应的任务;
第四子模块,用于判断所述目标消费进程中是否存在所述任务ID;若是,执行第一子模块的内容,若否,执行第五子模块的内容;
第五子模块,用于确定所述目标消费进程中所述订单的任务执行完毕。
在一个可选的实施例中,所述订单执行系统还包括:
任务队列删除模块,用于将所述Redis数据库中所述订单对应的所述任务队列删除。
本发明实施例所提供的订单执行系统可执行本发明任意实施例所提供的订单执行方法,具备执行方法相应的功能模块和有益效果。
实施例四
图6示出了可以用来实施本发明的实施例的电子设备40的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图6所示,电子设备40包括至少一个处理器41,以及与至少一个处理器41通信连接的存储器,如只读存储器(ROM)42、随机访问存储器(RAM)43等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器41可以根据存储在只读存储器(ROM)42中的计算机程序或者从存储单元48加载到随机访问存储器(RAM)43中的计算机程序,来执行各种适当的动作和处理。在RAM 43中,还可存储电子设备40操作所需的各种程序和数据。处理器41、ROM 42以及RAM 43通过总线44彼此相连。输入/输出(I/O)接口45也连接至总线44。
电子设备40中的多个部件连接至I/O接口45,包括:输入单元46,例如键盘、鼠标等;输出单元47,例如各种类型的显示器、扬声器等;存储单元48,例如磁盘、光盘等;以及通信单元49,例如网卡、调制解调器、无线通信收发机等。通信单元49允许电子设备40通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器41可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器41的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器41执行上文所描述的各个方法和处理,例如订单执行方法。
在一些实施例中,订单执行方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元48。在一些实施例中,计算机程序的部分或者全部可以经由ROM 42和/或通信单元49而被载入和/或安装到电子设备40上。当计算机程序加载到RAM 43并由处理器41执行时,可以执行上文描述的订单执行方法的一个或多个步骤。备选地,在其他实施例中,处理器41可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行订单执行方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种订单执行方法,其特征在于,应用于订单执行系统,订单执行系统设置有Redis数据库和多个消费进程,每个所述消费进程包括多个业务线程;所述订单执行控制方法包括:
在所述Redis数据库接收到订单的任务ID时,判断所述Redis数据库中是否存在与所述订单对应的任务队列;
若是,将所述任务ID添加至所述任务队列的末端;
若否,根据所述订单的订单号生成所述任务队列,将所述任务ID添加至所述任务队列;
针对每个所述订单,确定与所述订单对应的目标消费进程;
将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程;
按照所述任务ID的排列顺序在所述目标消费进程中执行对应的任务。
2.如权利要求1所述的方法,其特征在于,所述针对每个所述订单,确定与所述订单对应的目标消费进程,包括:
判断是否存在与所述订单对应的消费进程;
若是,将与所述订单对应的消费进程作为目标消费进程;
若否,基于平均分配原则对消费进程分配所述订单,将所述订单分配到的消费进程作为目标消费进程。
3.如权利要求1所述的方法,其特征在于,在所述将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程之前,包括:
判断所述目标消费进程当前是否正在执行所述订单的任务;
若否,检测所述目标消费进程中是否存在空闲的业务线程;
当所述目标消费进程中存在空闲的业务线程时,执行将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程的步骤。
4.如权利要求3所述的方法,其特征在于,所述将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程,包括:
将所述目标消费进程中任一空闲的业务线程作为目标业务线程;
将所述订单对应的所述任务队列中的所述任务ID发送给所述目标业务线程。
5.如权利要求1-4任一项所述的方法,其特征在于,在所述将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程之后,还包括:
将所述任务ID从所述任务队列删除。
6.如权利要求1-4任一项所述的方法,其特征在于,所述Redis数据库中存储有与所述任务ID对应的任务执行数据,所述按照所述任务ID的排列顺序在所述目标消费进程中执行对应的任务,包括:
将所述目标消费进程中剩余的、排序最靠前的所述订单的所述任务ID作为目标ID;
根据所述目标ID从所述Redis数据库获取对应的任务执行数据并发送至所述目标消费进程;
所述目标消费进程基于所述任务执行数据执行所述目标ID对应的任务;
将所述目标ID从所述目标消费进程中删除;
判断所述目标消费进程中是否存在所述任务ID;
若是,返回将所述目标消费进程中剩余的、排序最靠前的所述订单的所述任务ID作为目标ID的步骤;
若否,确定所述目标消费进程中所述订单的任务执行完毕。
7.如权利要求6所述的方法,其特征在于,在所述确定所述目标消费进程中所述订单的任务执行完毕之后,还包括:
将所述Redis数据库中所述订单对应的所述任务队列删除。
8.一种订单执行系统,其特征在于,所述订单执行系统设置有Redis数据库和多个消费进程,每个所述消费进程包括多个业务线程;
所述订单执行系统包括:
任务队列判断模块,用于在所述Redis数据库接收到订单的任务ID时,判断所述Redis数据库中是否存在与所述订单对应的任务队列;若是,执行第一添加模块的内容,若否,执行第二添加模块的内容;
第一添加模块,用于将所述任务ID添加至所述任务队列的末端;
第二添加模块,用于根据所述订单的订单号生成所述任务队列,将所述任务ID添加至所述任务队列;
目标消费进程确定模块,用于针对每个所述订单,确定与所述订单对应的目标消费进程;
任务发送模块,用于将所述订单对应的所述任务队列中的所述任务ID发送给所述目标消费进程;
任务执行模块,用于按照所述任务ID的排列顺序在所述目标消费进程中执行对应的任务。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的订单执行方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的订单执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311650879.XA CN117541356A (zh) | 2023-12-04 | 2023-12-04 | 一种订单执行方法、系统、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311650879.XA CN117541356A (zh) | 2023-12-04 | 2023-12-04 | 一种订单执行方法、系统、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117541356A true CN117541356A (zh) | 2024-02-09 |
Family
ID=89784100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311650879.XA Pending CN117541356A (zh) | 2023-12-04 | 2023-12-04 | 一种订单执行方法、系统、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117541356A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100150329A1 (en) * | 2008-12-12 | 2010-06-17 | Verizon Data Services Llc | Distributed order processing |
CN108765083A (zh) * | 2018-05-30 | 2018-11-06 | 平安科技(深圳)有限公司 | 路由化订单配置及处理方法、以及系统 |
CN110119305A (zh) * | 2019-05-13 | 2019-08-13 | 北京达佳互联信息技术有限公司 | 任务执行方法、装置、计算机设备及存储介质 |
CN113837826A (zh) * | 2021-08-20 | 2021-12-24 | 上海万物新生环保科技集团有限公司 | 一种处理订单的方法及设备 |
CN114116247A (zh) * | 2021-04-02 | 2022-03-01 | 北京京东拓先科技有限公司 | 基于Redis的消息处理方法、装置、系统、服务器和介质 |
CN114217875A (zh) * | 2021-12-17 | 2022-03-22 | 平安壹钱包电子商务有限公司 | 处理订单的方法、装置、设备及存储介质 |
CN114358578A (zh) * | 2021-12-31 | 2022-04-15 | 广州佳帆计算机有限公司 | 基于消息队列的订单处理方法和装置 |
CA3202557A1 (en) * | 2022-06-08 | 2023-08-11 | 10353744 Canada Ltd. | A data distribution method, apparatus, device and storage medium |
-
2023
- 2023-12-04 CN CN202311650879.XA patent/CN117541356A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100150329A1 (en) * | 2008-12-12 | 2010-06-17 | Verizon Data Services Llc | Distributed order processing |
CN108765083A (zh) * | 2018-05-30 | 2018-11-06 | 平安科技(深圳)有限公司 | 路由化订单配置及处理方法、以及系统 |
CN110119305A (zh) * | 2019-05-13 | 2019-08-13 | 北京达佳互联信息技术有限公司 | 任务执行方法、装置、计算机设备及存储介质 |
CN114116247A (zh) * | 2021-04-02 | 2022-03-01 | 北京京东拓先科技有限公司 | 基于Redis的消息处理方法、装置、系统、服务器和介质 |
CN113837826A (zh) * | 2021-08-20 | 2021-12-24 | 上海万物新生环保科技集团有限公司 | 一种处理订单的方法及设备 |
CN114217875A (zh) * | 2021-12-17 | 2022-03-22 | 平安壹钱包电子商务有限公司 | 处理订单的方法、装置、设备及存储介质 |
CN114358578A (zh) * | 2021-12-31 | 2022-04-15 | 广州佳帆计算机有限公司 | 基于消息队列的订单处理方法和装置 |
CA3202557A1 (en) * | 2022-06-08 | 2023-08-11 | 10353744 Canada Ltd. | A data distribution method, apparatus, device and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3893112A2 (en) | Method and apparatus for scheduling deep learning reasoning engines, device, and medium | |
EP4113299A2 (en) | Task processing method and device, and electronic device | |
CN112817992A (zh) | 执行更改任务的方法、装置、电子设备以及可读存储介质 | |
CN112860401A (zh) | 任务调度方法、装置、电子设备和存储介质 | |
CN116661960A (zh) | 一种批量任务处理方法、装置、设备以及存储介质 | |
CN115904510A (zh) | 多操作数指令的处理方法、图形处理器及存储介质 | |
CN117541356A (zh) | 一种订单执行方法、系统、电子设备和存储介质 | |
CN116126719A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN115890684A (zh) | 一种机器人调度方法、装置、设备及介质 | |
CN115237574A (zh) | 人工智能芯片的调度方法、装置及电子设备 | |
CN117290113B (zh) | 一种任务处理方法、装置、系统和存储介质 | |
CN113220230B (zh) | 数据导出方法及其装置、电子设备以及存储介质 | |
CN117493342B (zh) | 商品数据更新方法、装置、电子设备和存储介质 | |
CN114584605B (zh) | 一种业务分发方法、装置、电子设备及存储介质 | |
CN116579914B (zh) | 一种图形处理器引擎执行方法、装置、电子设备及存储介质 | |
CN117057411B (zh) | 一种大语言模型训练方法、装置、设备及存储介质 | |
CN117591249A (zh) | 事务处理方法、装置、电子设备及存储介质 | |
CN116974767A (zh) | 一种任务调度系统、方法、装置、设备及介质 | |
CN117971430A (zh) | 一种作业调度方法、装置、设备及介质 | |
CN115454660A (zh) | 一种任务管理方法、装置、电子设备及存储介质 | |
CN116521659A (zh) | 数据治理方法、装置、电子设备及存储介质 | |
CN115599828A (zh) | 一种信息处理方法、装置、设备、存储介质 | |
CN115391292A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
CN117009000A (zh) | 运行开源鸿蒙系统的组件、方法、装置、设备及介质 | |
CN118151978A (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 |