CN116149837A - 资源处理方法及装置、电子设备、存储介质 - Google Patents
资源处理方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN116149837A CN116149837A CN202211200421.XA CN202211200421A CN116149837A CN 116149837 A CN116149837 A CN 116149837A CN 202211200421 A CN202211200421 A CN 202211200421A CN 116149837 A CN116149837 A CN 116149837A
- Authority
- CN
- China
- Prior art keywords
- resource
- target
- distribution
- request
- count
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 26
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 238000009826 distribution Methods 0.000 claims abstract description 185
- 238000012545 processing Methods 0.000 claims abstract description 111
- 238000000034 method Methods 0.000 claims abstract description 53
- 230000008569 process Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 238000012795 verification Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 229910052737 gold Inorganic materials 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Images
Classifications
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/23—Updating
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Software Systems (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Data Mining & Analysis (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种资源处理方法及装置、电子设备、存储介质,该方法包括:接收针对目标资源的配发请求,配发请求用于触发对目标资源进行配发处理,配发请求中包括目标资源的资源标识、请求处理数量和资源请求类型;根据资源标识,获取目标资源对应的配发计数,配发计数表示目标资源在当前时刻已被配发的数量,配发计数存储于目标数据库中,目标数据库为支持通过单线程对存储的数据进行原子操作的键值型数据库,原子操作用于对数据进行更新;根据请求处理数量,对配发计数执行与资源请求类型对应的原子操作;根据原子操作后的配发计数,对目标资源进行配发处理。本申请实施例能够提升向用户配发虚拟资源时的效率。
Description
技术领域
本申请涉及数据处理领域,特别涉及一种资源处理方法及装置、电子设备、存储介质。
背景技术
互联网应用程序一般会通过设置各类虚拟资源并向用户提供虚拟资源的方式来提升用户黏度,虚拟资源例如可以是不同金额的优惠价、积分、虚拟金币、礼品卡等。
为了避免在向用户配发虚拟资源时出现发超,即,配发出去的虚拟资源数量超过设置的库存数量的上限的情况出现,一般会通过使用分布式锁锁住虚拟资源,即,使用分布式锁锁住要执行增加库存或减少库存的编码块,以对存储在业务数据库,例如mysql数据库中的该虚拟资源的库存数进行更新操作。该种方法在并发处理量较大的情况下,会导致系统处理性能下降,甚至导致业务不可用的情况出现。
发明内容
本申请提供一种资源处理方法及装置、电子设备、存储介质,以提升向用户配发虚拟资源时的效率,进而提升系统性能。
第一方面,本申请提供了一种资源处理方法,该数据匹配方法包括:
接收针对目标资源的配发请求,其中,所述配发请求用于触发对目标资源进行配发处理,所述配发请求中包括目标资源的资源标识、请求处理数量和资源请求类型,所述目标资源为库存数量存在上限的虚拟资源;
根据所述资源标识,获取所述目标资源对应的配发计数,其中,所述配发计数表示所述目标资源在当前时刻已被配发的数量,所述配发计数存储于目标数据库中,所述目标数据库为支持通过单线程对存储的数据进行原子操作的键值型数据库,所述原子操作用于对数据进行更新;
根据所述请求处理数量和所述资源请求类型,对所述配发计数执行原子操作;以及,
根据所述原子操作后的配发计数,对所述目标资源进行配发处理。
第二方面,本申请提供了一种资源处理装置,该资源处理装置包括:
接收单元,用于接收针对目标资源的配发请求,其中,所述配发请求用于触发对目标资源进行配发处理,所述配发请求中包括目标资源的资源标识、请求处理数量和资源请求类型,所述目标资源为库存数量存在上限的虚拟资源;
获取单元,用于根据所述资源标识,获取所述目标资源对应的配发计数,其中,所述配发计数表示所述目标资源在当前时刻已被配发的数量,所述配发计数存储于目标数据库中,所述目标数据库为支持通过单线程对存储的数据进行原子操作的键值型数据库,所述原子操作用于对数据进行更新;
操作单元,用于根据所述请求处理数量和所述资源请求类型,对所述配发计数执行原子操作;以及,
配发单元,用于根据所述原子操作后的配发计数,对所述目标资源进行配发处理。
第三方面,本申请提供了一种电子设备,该电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的资源处理方法。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的资源处理方法。
本申请所提供的实施例,电子设备在接收到针对目标资源的配发请求之后,通过先根据该目标资源的资源标识,获取目标资源对应的配发计数,之后,再根据目标资源的请求处理数量和该资源请求类型,对存储于目标数据库中的、表示目标资源在当前时刻已被配发的数量的配发计数执行原子操作,即可根据执行该原子操作后的配发计数,对目标资源进行配发处理。
在本申请所提供的实施例中,由于目标资源对应的配发计数是存储在目标数据库中,而又由于目标数据库为支持通过单线程对存储的数据进行原子操作的键值型(KeyValue,KV)数据库,这就使得在电子设备需要对目标资源执行库存增加或库存减少操作时,可以基于该目标数据库所对应的原子操作指令,以单线程的方式执行该类指令,从而实现基于该配发计数对应的键(key)对该配发计数的值(value)高效地进行原子操作的效果,而不需要进行锁行操作,避免在并发处理量较大时可能带来的系统性能下降问题。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本申请的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请,并不构成对本申请的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为本申请实施例提供的一种资源处理方法的流程图;
图2为本申请实施例提供的用于获取配发计数的流程图;
图3为本申请实施例提供的原子操作的流程图;
图4为本申请实施例提供的资源配发处理的流程图;
图5为本申请实施例提供的有效性校验处理的流程图;
图6为本申请实施例提供的资源处理的框架示意图;
图7为本申请实施例提供的一种资源处理装置的框图;
图8为本申请实施例提供的一种电子设备的框图。
具体实施方式
为使本领域的技术人员更好地理解本申请的技术方案,以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本申请各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本申请。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本申请的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
在相关技术中,各种互联网应用程序在向用户配发诸如优惠券、积分、虚拟金币、礼品卡等虚拟资源时,为了避免出现发超的情况,通常是在接收到客户端发送的资源获取请求或者资源退回请求时,执行以下步骤:1、开启分布式锁,获取对业务数据库,例如,mysql数据库中该虚拟资源所对应的库存记录的单独处理权限;2、在成功开启分布式锁之后,执行更新库存的业务逻辑;2、更新成功之后,关闭分布式锁,向客户端返回执行成功或执行失败的响应消息。
其中,在计算机技术中,分布式锁通常用于控制分布式系统有序的对共享资源进行操作,通过互斥来保持一致性,以实现在同一时刻只有一个线程(Thread)在执行某段编码,避免对共享资源的操作出现错误。
相关技术中的该种方式在对业务数据库中虚拟资源的库存记录进行更新操作时,其处理粒度会精确到业务数据库的数据表的行级粒度,这在系统中针对虚拟资源的并发处理量较大的情况下,通常会引起锁竞争,性能极差甚至可能造成死锁(Deadlock),在极端情况下甚至可能导致整个业务不可用。
为解决以上问题,本申请实施例提供了一种资源处理方法,请参看图1,其为本申请实施例提供的一种资源处理方法的流程图。该方法可以应用于电子设备中,该电子设备可以为服务器,该服务器可以为物理服务器,或者也可以为虚拟服务器;当然,随着技术的不断进步,该电子设备也可以为终端设备,即,也可以将该方法单独应用于终端设备中,例如,可以应用于边缘计算场景下的边缘终端设备中,此处不做特殊限定。
如图1所示,本申请实施例提供的资源处理方法可以包括如下步骤S101-S104,以下予以详细说明。
步骤S101,接收针对目标资源的配发请求,其中,配发请求用于触发对目标资源进行配发处理,配发请求中包括目标资源的资源标识、请求处理数量和资源请求类型,目标资源为库存数量存在上限的虚拟资源。
在本申请实施例中,目标资源可以为库存数量存在上限的任意一种或多种虚拟资源,该虚拟资源用于配发给用户,以提升用户黏度,例如,虚拟资源可以是优惠券、积分、虚拟金币、礼品卡等;需要说明的是,在本申请实施例中,如无特殊说明,以该目标资源为优惠券进行举例说明。
在本申请实施例中,针对目标资源的配发请求可以由用户基于终端设备发出,该配发请求可以是用户发出的用于请求获取一定数量的目标资源的请求,或者,也可以是用户发出的用于请求退回一定数量的目标资源的请求。
例如,在金融借贷平台中,用户在领券中心中看到一优惠券后,可以通过点击该优惠券,以触发终端设备向服务器发送用于获取该优惠券的请求。
在本申请实施例中,请求处理数量,用于表示请求处理的目标资源的数量。当然,根据目标资源的资源类型,该请求处理数量也可以不需要由用户指定,而是为默认值。例如,在目标资源为优惠券的请求下,请求处理数量通常为1。
步骤S102,根据资源标识,获取目标资源对应的配发计数,其中,配发计数表示目标资源在当前时刻已被配发的数量,配发计数存储于目标数据库中,目标数据库为支持通过单线程对存储的数据进行原子操作的键值型数据库,原子操作用于对数据进行更新。
资源请求类型,可以用于表示该数据请求是用于获取目标资源还是用于退回目标资源。在本申请实施例中,该资源请求类型可以包括资源获取类型和资源退回类型,其中,资源获取类型表示该配发请求用于请求电子设备向基于终端设备发出该请求的目标用户分配目标资源,资源退回类型表示该配发请求用于请求电子设备收回为该目标用户分配的目标资源。
需要说明的是,在实际实施时,资源请求类型也可以包括其他类型,例如还可以包括资源升级类请求,该资源升级类请求表示该配发请求用于请求电子设备将当前分配给目标用户的第一级别的虚拟资源升级为第二级别的虚拟资源,其中,第二级别高于第一级别。例如,用户可以通过发出该资源升级类请求,以将持有的“满减金额为3元”的优惠券升级为“满减金额为5元”的优惠券。
在相关技术中,在对虚拟资源进行库存增加或减少操作时,是直接对业务数据库,例如mysql数据库中该虚拟资源所在资源信息表中对应数据记录中的库存数进行更新的处理方式,由于业务数据库的锁粒度是精确到行级,这在并发处理量较高情况下,极易引起锁竞争。因此,为了高效地对目标资源进行配发处理,以提升系统性能,本申请实施例采取在目标数据库中设置目标资源对应的配发计数,并基于该配发计算对目标资源进行配发处理,由于目标数据库为支持通过单线程对存储的数据进行原子操作的键值型数据库,因此,在对目标资源进行配发处理时,可以不需要锁行,而是通过该配发计数的键(key),对该配发计数的键值对进行锁操作即可;并且,由于目标数据库是通过单线程执行该原子操作,这就使得系统中即使同一时刻存在多个用于请求退回目标资源的线程,但是,该多个线程同时发送至目标数据库中用于更新该配发计数的指令也将会被目标数据库串行执行,因此,基于该配发计数在对目标资源执行配发处理时,只需要在配发请求为资源获取类型时才需要使用分布式锁,而在该配发请求为资源退回类型的情况下,可以不必使用分布式锁。
需要说明的是,在本申请实施例中,之所以在配发请求为资源获取类型时需要获取目标数据库的分布式锁,是因为在该种情况下,电子设备对该目标资源所对应的配发计算执行的原子操作为原子自增操作,以基于该自增后的配发计数判断是否会出现资源发超情况,因此,电子设备在响应当前配发请求的过程中,必须保障该配发计数的数值不会因为目标数据库接收到其他设备发送的更新请求而发生改变,即,保障该配发计数的正确性,所以需要获取目标数据库的分布式锁,保障在电子设备响应当前配发请求对目标执行进行配发处理的过程中,该配发计数的正确性。
在本申请实施例中,该目标数据库可以为Redis数据库,当然,随着技术的不断进步,目标数据库也可以为其它支持通过单线程对存储的数据进行原子操作的键值型数据库,此处不做特殊限定。
步骤S103,根据请求处理数量和资源请求类型,对配发计数执行原子操作。
步骤S104,根据原子操作后的配发计数,对目标资源进行配发处理。
根据以上说明可知,在本申请实施例中,电子设备在接收到针对目标资源的配发请求之后,在经过上述步骤S102获取到该目标资源对应的配发计数之后,可以根据配发请求中的请求处理数量和资源请求类型,先对目标数据库中的该配发计数执行对应的原子操作,之后,根据该原子操作后的配发计数,即可确定目标资源是否可能出现资源发超的情况,从而实现高效地对目标资源进行配发处理,避免在并发处理量较大时可能带来的系统性能下降问题。
另外,根据以上说明可知,在本申请实施例中,在执行上述步骤S102之前,考虑到在配发请求为资源获取类型的情况下,在对配发计数进行原子操作之后,还需要基于该原子操作后的配发计数,确定资源是否可能存在发超情况,以及可能还需要同步在业务数据库中写入对应该配发请求的数据配发记录,因此,为保障该原子操作后的配发计数的正确性,即保障该原子操作后的配发计数的数值与当前响应的配发请求的一致性,该种情况下还需要获取目标数据库的分布式锁,以保障当前时刻电子设备对目标数据库中该配发计数操作的独占性,即,在本申请实施例中,在执行上述步骤S102之前,该方法还包括:在资源请求类型为资源获取类型的情况下,获取目标数据库的分布式锁,并在成功获取到分布式锁的情况下,执行上述的根据资源标识,获取目标资源对应的配发计数步骤;以及,在对目标资源进行配发处理之后,释放分布式锁,其中,该分布式锁用于保障在响应配发请求对目标资源进行配发处理的过程中,所述配发计数的正确性。
在本申请实施例中,在接收到针对目标资源的配发请求之后,在根据该配发请求中的资源请求类型确定该配发请求为资源获取类型的情况下,通过获取目标数据库的分布式锁,可以确保电子设备在响应该配发请求对目标资源进行资源管理的过程中,对目标资源所对应的配发计数的原子操作的一致性,同时,由于目标数据库为键值型数据库,因此,相较于相关技术中的锁行操作,本申请实施例只需要根据键值实现分布式锁即可,处理性能更为高效。
请参看图2,其为本申请实施例提供的用于获取配发计数的流程图。如图2所示,在一些实施例中,上述步骤S102中所述的根据资源标识,获取目标资源对应的配发计数,包括:步骤S201,根据资源标识,确定目标数据库中是否已缓存配发计数;在确定目标数据库中未缓存配发计数的情况下,执行步骤S202,生成资源标识对应的目标键值对,并将目标键值对存储于目标数据库中,其中,目标键值对中配发计数的初始值为预设数值。
目标键值对,为目标数据库中用于缓存目标资源对应的配发计数的键值对。
在本申请实施例中,在目标数据库为Redis数据库的情况下,考虑到Redis数据库可以通过指令incyBy()或decyBy()对字符串型(String)的数据执行原子自增操作或原子自减操作,因此,如无特殊说明,该目标键值对中的值为字符串型。例如,目标键值对在初始生成时刻可以为<resourcecount,0>的形式,即,使用“resourcecount”作为目标资源对应的配发计数的键,以预设数值为0作为配发计数的初始值。
需要说明的是,在本申请实施例中,如无特殊说明,该预设数值可以为0,当然该预设数值也可以根据实际实施情况进行设置。
另外,考虑到在系统出现异常的情况下,目标数据库中缓存的该配发计数可能出现丢失的情况,因此,为了在系统出现异常时可以快速获取该配发计数,以避免出现发超的情况,在一些实施例中,在执行对目标资源进行配发处理的过程中,该方法还包括:按照预设时间间隔,将存储于目标数据库中的该配发计数存储于业务数据库中,其中,业务数据库用于永久性的存储目标资源的配发计数。在该种实施方式中,上述步骤S202所述的生成资源标识对应的目标键值对,包括:确定业务数据库中是否存储该配发计数,在确定存在该配发计数的情况下,从业务数据库中获取该配发计数,并根据该配发计数,生成目标键值对。
即,在电子设备运行过程中,通过由电子设备按照预设时间间隔将目标数据库中目标资源对应的配发计数持久化,即永久性的存储于业务数据库中,可以保障在目标数据库出现异常的情况下,可以基于业务数据库中持久化存储的该配发计数快速进行异常现场恢复,以提升本申请实施例所提供方法的健壮性。
请参看图3,其为本申请实施例提供的原子操作的流程图。如图3所示,在一些实施例中,上述步骤S103中所述的根据请求处理数量和资源请求类型,对配发计数执行原子操作,包括:步骤S301,在资源请求类型为资源获取类型的情况下,根据第一预设指令和请求处理数量,对配发计数执行原子自增操作,以将配发计数的数值更新为当前数值和请求处理数量的和值,其中,第一预设指令为目标数据库中用于对数值执行原子自增操作的指令;以及,步骤S302,在资源请求类型为资源退回类型的情况下,根据第二预设指令和请求处理数量,对配发计数执行原子自减操作,以将配发计数的数值更新为当前数值和请求处理数量的差值,其中,第二预设指令为目标数据库中用于对数值执行原子自减操作的指令。
在本申请实施例中,在目标数据库为Redis数据库的情况下,第一预设指令可以为incyBy()指令,第二预设指令可以为decyBy()指令;当然,随着技术的不断进步,该第一预设指令和第二预设指令也可以根据使用的目标数据库的不同而不同,此处不做特殊限定。
所述对配发计数执行原子自增操作,可以通过指令“Redis.incyBy(配发计数的键)请求处理数量”来实现;所述对配发计数执行原子自减操作,可以通过指令“Redis.decyBy(配发计数的键)请求处理数量”来实现。
例如,在配发计数的键为“resourcecount”,请求处理数量为“20”的情况下,可以通过“Redis.incyBy(resourcecount)20”对目标资源对应的配发计数执行原子自增操作,以及,通过“Redis.decyBy(resourcecount)20”对目标资源对应的配发计数执行原子自减操作。
根据以上说明可知,在本申请实施例中,相较于相关技术中对业务数据库中的整行进行更新的处理方式,一方面,本申请实施例中通过键的方式对目标资源的配发计数进行更新的操作方式相对更高效,另一方面,通过在目标数据库中设置目标资源对应的配发计数,并依赖该配发计数确定是否存在资源发超情况,可以仅在配发请求为资源获取类型的情况下,才获取目标数据库的分布式锁,而在配发请求为资源退回类型的情况下,因为不涉及到资源发超情况,所以该种情况下,可以仅基于目标数据库为通过单线程对存储的数据进行原子操作的键值型数据库的特性,即可保障该配发计数的正确性,而不必获取目标数据库的分布式锁,从而可以进一步提升对资源进行配发处理时的性能,进而提升系统处理效率。
请参看图4,其为本申请实施例提供的资源配发处理的流程图。如图4所示,上述步骤S104中所述的根据原子操作后的配发计数,对目标资源进行配发处理,可以包括以下步骤S401-S404:
步骤S401,在资源请求类型为资源获取类型的情况下,判断原子操作后的配发计数是否大于目标资源的库存数量的上限。
其中,目标资源的库存数量的上限,可以根据预先配置获得,或者,也可以是在执行该步骤之前,从用于存储目标资源的资源信息的业务数据库,例如mysql数据库中获得,此处不做特殊限定。
为避免资源发超,在本申请实施例中,在接收到的配发请求的类型为资源获取类型的情况下,可以是根据请求处理数量,对目标数据库中的配发计数执行原子自增操作之后,判断执行原子自增操作后的该配发计数是否大于目标资源的库存数量的上限,以确定是否发超。
步骤S402,若原子操作后的配发计数小于或等于库存数量的上限,则生成与配发请求对应的数据配发记录。
步骤S403,将数据配发记录写入至业务数据库中,业务数据库用于存储目标资源的数据配发记录;以及执行步骤S404,向发送配发请求的终端设备返回用于表示请求成功的第一响应消息;其中,数据配发记录中包括目标用户的用户标识和配发标识,配发标识用于表示与请求处理数量对应的目标资源是否已配发至目标用户,配发标识的初始数值表示已配发,目标用户为基于所述终端设备发出配发请求的用户。
即,若原子自增操作后的配发计数小于或等于库存数量的上限,则可以说明当前库存的目标资源不会出现发超情况,因此,可以响应于该配发请求,将该请求处理数量的目标资源配发至发出该配发请求的目标用户。
例如,在目标资源为库存数量为100的优惠券的情况下,若执行原子自增操作后的配发计数为50,则可以响应于该配发请求,将该优惠券配发至用户。
在本申请实施例中,为了更方便的对配发的虚拟资源进行管理,以确定资源的配发情况,在确定可以将对应请求处理数量的目标资源配发至目标用户的情况下,电子设备可以对应生成该配发请求的数据配发记录,该数据配发记录中至少包括配发标识,当然,该数据配发记录中还可以包括:用户标识、资源标识、配发时间、请求处理数量等信息,此处不做特殊限定。
在一些实施例中,上述步骤S104中所述的根据原子操作后的配发计数,对目标资源进行配发处理,也可以为:在资源请求类型为资源退回类型的情况下,获取目标用户的用户标识,其中,目标用户为基于终端设备发出配发请求的用户;根据用户标识,从业务数据库中获取与目标用户对应的数据配发记录;将数据配发记录中的配发标识的数值更新为表示已退回的数值,并向终端设备返回表示请求成功的第二响应消息。
即,在接收到用于退回资源的配发请求的情况下,可以根据用户的用户标识,将业务数据库中表示配发至该用户的目标资源的数据配发记录中的配发标识设置为已退回,以方便电子设备管理目标资源的配发情况。
例如,当在t1时刻接收到用户1发送的用于获取“优惠券1”的配发请求的情况下,电子设备响应于该配发请求,通过根据“优惠券1”的资源标识,获取Redis数据库中该优惠券对应的配发计数的键为“resourcecount”,在电子设备可以通过指令“Redis.incyBy(resourcecount)1”对该配发计数进行原子自增操作,并在该原子自增后的配发计数的数值小于该优惠券的配发总数的情况下,生成形如<用户1,优惠券1,已配发>的数据配发记录;而当在t2时刻接收到用户1发送的用于退回“优惠券1”的配发请求的情况下,响应于该配发请求,电子设备可以通过指令“Redis.decyBy(resourcecount)1”对该配发计数执行原子自减操作,同时,根据用户1的用户标识,将用户1对应的数据配发记录中的配发标识更新为表示已退回的数值,例如,更新后的数据配发记录可以为<用户1,优惠券1,已退回>。
根据以上说明可知,在本申请实施例中,通过基于缓存于目标数据库中的配发计数确定当前时刻待配发的目标资源是否可能出现发超情况,使得电子设备可以更高效的进行配发处理,避免相关技术中因为并发处理量较大而出现锁竞争从而导致的系统性能下降问题。
请参看图5,其为本申请实施例提供的有效性校验处理的流程图。如图5所示,在一些实施例中,在执行上述步骤S102中所述的根据资源标识,确定目标数据库中是否已缓存配发计数步骤之前,该方法还包括以下步骤S501-S503:
步骤S501,根据资源标识,确定目标数据库中是否已缓存目标资源的资源信息,其中,资源信息包括有效性标识信息和配发用户类别信息。
其中,有效性标识信息可以是用于标识目标资源是否有效的信息,该有效性标识信息可以直接以表示“是”和“否”的信息来表示目标资源在当前时刻是否有效,或者,也可以是间接表示目标是这样是否有效的信息,例如,有效性标识信息可以为目标资源对应的有效时间范围,此处不做特殊限定。
配发用户类别信息,可以表示目标资源对应的用户的类别信息。即,在一些促销场景下,为了提升用户体验,通常可以根据用户的不同提供不同的虚拟资源,例如,在每年学生开学时,电商平台一般会向学生群体配发对应的优惠券,该类优惠券通常只面向学生用户,其他用户,例如成人通常并不能领取该类优惠券。因此,在本申请实施例中,在设置目标资源时,可以基于该配发用户类别信息,设置目标资源对应的用户的类别信息,以在对资源进行配发处理时,基于该配发用户类别信息,判断用户是否为有效用户,即校验用户是否具备获取目标资源的权限。
步骤S502,在确定未缓存资源信息的情况下,从业务数据库中获取并缓存资源信息至目标数据库中,其中,业务数据库用于永久性的存储资源的资源信息。
在本申请实施例中,业务数据库可以为mysql数据库。
即,为了提升数据处理速度,考虑到目标数据库,例如,Redis数据库是基于内存管理存储数据,因此,若目标数据库中未缓存目标资源的资源信息,则为了提升在之后处理时的查询速度,可以从业务数据库中获取并缓存目标资源的资源信息,例如,可以以目标资源的资源标识为键(key),生成该目标资源的资源信息所对应的键值对,并通过存储该键值对来缓存该资源信息,其中,目标资源的资源信息对应的键值对中的值可以为list、map、hash等数据类型,此处不做特殊限定。
步骤S503,在确定目标数据库已缓存资源信息的情况下,根据有效性标识信息和配发用户类别信息,对配发请求进行有效性校验,并在校验通过的情况下,执行根据资源标识,确定目标数据库中是否已缓存配发计数步骤。
在本申请实施例中,在确定已缓存资源信息的情况下,为了提升处理速度,可以在进行配发处理之前,先校验接收到的配发请求的有效性,即,对该配发请求进行合法性校验,该有效性校验具体可以包括:根据有效性标识信息确定目标资源在当前时刻是否有效;以及根据配发用户类别信息判断目标用户是否为有效用户,目标用户为基于终端设备发出配发请求的用户。即,可以在确定目标资源在当前时刻有效,并且目标用户为有效用户的情况下,确定配发请求校验通过;或者,在目标资源在当前时刻无效,和/或目标用户是无效用户的情况下,确定配发请求校验未通过。需要说明的是,若配发请求校验未通过,则可以直接向目标用户使用的终端设备返回表示请求失败的响应消息。
根据以上说明可知,本申请实施例提供的资源处理方法,通过将目标资源的资源信息缓存在目标数据库中,并在进行配发处理之前,基于该资源信息对接收到的配发请求进行有效性校验,可以避免不必要的配发处理,提升系统的处理速度,进而提升针对目标资源的配发处理的处理效率。
为便于理解本申请实施例提供的资源处理方法,请参看图6,其为本申请实施例提供的资源处理的框架示意图。以下结合图6,对本申请实施例提供的资源处理方法进行说明,其中,在图6中,以目标资源为优惠券,以资源请求类型包括资源获取类型和资源退回类型,以请求处理数量默认为1,以目标数据库为Redis数据库,以业务数据库为mysql数据库进行举例说明。
如图6所示,在本申请实施例中,电子设备可以先执行步骤S601,接收目标用户基于终端设备发出的针对目标优惠券的配发请求;在接收到该配发请求之后,电子设备可以先执行步骤S602,从配发请求中,获取该目标优惠券的资源请求类型。
在获取到该资源请求类型之后,如图6所示,可以执行步骤S603,判断资源请求类型是否为资源获取类型;若是资源获取类型,则执行步骤S604,获取Redis数据库的分布式锁,以及,在成功获取到目标数据库的分布式锁的情况下,执行步骤S605,判断Redis数据库中是否已缓存目标优惠券的优惠券信息;若Redis数据库中未缓存该优惠券信息,则执行步骤S606,从mysql数据库中获取并缓存该优惠券信息至Redis数据库;在Redis数据库缓存到该优惠券信息的情况下,执行步骤S607,根据优惠券信息中的有效性标识信息和配发用户类别信息,对配发请求进行有效性校验;另外,如图6所示,若执行步骤S603之后,判断资源请求类型不为资源获取类型,则直接执行上述步骤S605,即,判断Redis数据库中是否已缓存目标优惠券的优惠券信息。
在本申请实施例中,在对配发请求进行有效性校验之后,可以执行步骤S608,判断校验是否通过;若配发请求校验未通过,则可以执行步骤S609,向终端设备返回表示请求失败的响应消息1;若配发请求校验通过,则可以执行步骤S610,根据目标优惠券的券标识,获取目标优惠券对应的配发计数。
其中,步骤S610可以包括:判断Redis数据库中是否已缓存该配发计数,若未缓存,则生成目标优惠券的券标识对应的目标键值对,并将目标键值对存储于Redis数据库中。
请继续参看图6,在本申请实施例中,在获取到配发计数之后,执行步骤S611,判断资源请求类型是否为资源获取类型;若资源请求类型为资源获取类型,则执行步骤S612,根据Redis数据库的原子自增指令incyBy()指令对目标优惠券的配发计数执行自增1的原子自增操作;之后,执行步骤S613,判断自增后的配发计数是否大于券库存;若小于或等于券库存,则执行步骤S614,在mysql数据库中生成该配发请求对应的数据配发记录;之后,执行步骤S615,释放Redis数据库的分布式锁;以及,执行步骤S616,向终端设备返回表示请求成功的响应消息2。
若资源请求类型为资源退回类型,则执行步骤S617,根据Redis数据库的原子自减指令decyBy()指令对目标优惠券的配发计数执行自减1的原子自减操作;之后,执行步骤S618:将mysql数据库中该配发请求对应的数据配发记录中的配发标识更新为表示已退回的数值,并执行步骤S619,向终端设备返回表示请求成功的响应消息3,其中,在执行步骤S618的过程中,配发请求对应的数据配发记录,可以由电子设备通过获取基于终端设备发出该配发请求的目标用户的用户标识,并根据该用户标识获得该数据配发记录。
根据图6所示可知,本申请实施例提供的资源处理方法,通过缓存于目标数据库中的配发计数实现对目标资源的配发处理,可以提升系统的处理性能,避免在处理并发量较大时因为锁竞争而导致的系统性能下降甚至于导致业务不可用的问题出现,以提升资源配发处理的效率。
可以理解,本申请提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本申请不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本申请还提供了资源处理装置、电子设备、计算机可读存储介质,上述均可用来实现本申请提供的任一种资源处理方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图7为本申请实施例提供的一种资源处理装置的框图。
参照图7,本申请实施例提供了一种资源处理装置,可以应用于电子设备,该装置700包括:接收单元701、获取单元702、操作单元703和配发单元704。
该接收单元701,用于接收针对目标资源的配发请求,其中,配发请求用于触发对目标资源进行配发处理,配发请求中包括目标资源的资源标识、请求处理数量和资源请求类型,目标资源为库存数量存在上限的虚拟资源。
该获取单元702,用于根据资源标识,获取目标资源对应的配发计数,其中,配发计数表示目标资源在当前时刻已被配发的数量,配发计数存储于目标数据库中,目标数据库为支持通过单线程对存储的数据进行原子操作的键值型数据库,原子操作用于对数据进行更新。
该操作单元703,用于根据请求处理数量和资源请求类型,对配发计数执行原子操作。
该配发单元704,用于根据原子操作后的配发计数,对目标资源进行配发处理。
在一些实施例中,该装置700还包括锁管理单元,用于:在资源请求类型为资源获取类型的情况下,获取目标数据库的分布式锁,并在成功获取到分布式锁的情况下,执行根据资源标识,获取目标资源对应的配发计数的步骤;以及,在对目标资源进行配发处理之后,释放分布式锁。
在一些实施例中,获取单元702在根据资源标识,获取目标资源对应的配发计数时,可以用于:根据资源标识,确定目标数据库中是否已缓存配发计数;在确定目标数据库未缓存配发计数的情况下,生成资源标识对应的目标键值对,并将目标键值对存储于目标数据库中,其中,目标键值对中配发计数的初始值为预设数值。
在一些实施例中,该操作单元703在根据请求处理数量和资源请求类型,对配发计数执行原子操作时,可以用于:在资源请求类型为资源获取类型的情况下,根据第一预设指令和请求处理数量,对配发计数执行原子自增操作,以将配发计数的数值更新为当前数值和请求处理数量的和值,其中,第一预设指令为目标数据库中用于对数值执行原子自增操作的指令;在资源请求类型为资源退回类型的情况下,根据第二预设指令和请求处理数量,对配发计数执行原子自减操作,以将配发计数的数值更新为当前数值和请求处理数量的差值,其中,第二预设指令为目标数据库中用于对数值执行原子自减操作的指令。
在一些实施例中,该配发单元704在根据原子操作后的配发计数,对目标资源进行配发处理时,可以用于:在资源请求类型为资源获取类型的情况下,判断原子操作后的配发计数是否大于目标资源的库存数量的上限;若原子操作后的配发计数小于或等于库存数量的上限,则生成与配发请求对应的数据配发记录,并将数据配发记录写入至业务数据库中,业务数据库用于存储目标资源的数据配发记录;向发出配发请求的终端设备返回用于表示请求成功的第一响应消息;其中,数据配发记录中包括目标用户的用户标识和配发标识,配发标识用于表示与请求处理数量对应的目标资源是否已配发至目标用户,配发标识的初始数值表示已配发,目标用户为基于终端设备发出配发请求的用户。
在一些实施例中,该配发单元704在据原子操作后的配发计数,对目标资源进行配发处理时,可以用于:在资源请求类型为资源退回类型的情况下,获取目标用户的用户标识,其中,目标用户为基于终端设备发出配发请求的用户;根据用户标识,将与目标用户对应的数据配发记录中的配发标识的数值更新为表示已退回的数值,并向终端设备返回表示请求成功的第二响应消息。
在一些实施例中,该装置700还包括校验单元,用于:根据资源标识,确定目标数据库中是否已缓存目标资源的资源信息,其中,资源信息包括有效性标识信息和配发用户类别信息;在确定未缓存资源信息的情况下,从业务数据库中获取并缓存资源信息至目标数据库中,其中,业务数据库用于永久性的存储资源的资源信息;在确定目标数据库已缓存资源信息的情况下,根据有效性标识信息和配发用户类别信息,对配发请求进行有效性校验,并在校验通过的情况下,执行根据资源标识,确定目标数据库中是否已缓存配发计数步骤;其中,有效性校验包括根据有效性标识信息确定目标资源在当前时刻是否有效,以及根据配发用户类别信息判断目标用户是否为有效用户,目标用户为基于终端设备发出配发请求的用户。
图8为本申请实施例提供的一种电子设备的框图。
参照图8,本申请实施例提供了一种电子设备,该电子设备包括:至少一个处理器801;至少一个存储器802,以及一个或多个I/O接口803,连接在处理器801与存储器802之间;其中,存储器802存储有可被至少一个处理器801执行的一个或多个计算机程序,一个或多个计算机程序被至少一个处理器801执行,以使至少一个处理器801能够执行上述的资源处理方法。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的资源处理方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本申请实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述资源处理方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、闪存或其他存储器技术、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。
这里所描述的计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里参照根据本申请实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程资源处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程资源处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程资源处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程资源处理装置、或其它设备上,使得在计算机、其它可编程资源处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程资源处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本申请的范围的情况下,可进行各种形式和细节上的改变。
Claims (10)
1.一种资源处理方法,其特征在于,包括:
接收针对目标资源的配发请求,其中,所述配发请求用于触发对目标资源进行配发处理,所述配发请求中包括目标资源的资源标识、请求处理数量和资源请求类型,所述目标资源为库存数量存在上限的虚拟资源;
根据所述资源标识,获取所述目标资源对应的配发计数,其中,所述配发计数表示所述目标资源在当前时刻已被配发的数量,所述配发计数存储于目标数据库中,所述目标数据库为支持通过单线程对存储的数据进行原子操作的键值型数据库,所述原子操作用于对数据进行更新;
根据所述请求处理数量和所述资源请求类型,对所述配发计数执行原子操作;以及,
根据所述原子操作后的配发计数,对所述目标资源进行配发处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述请求处理数量和所述资源请求类型,对所述配发计数执行原子操作,包括:
在所述资源请求类型为资源获取类型的情况下,根据第一预设指令和所述请求处理数量,对所述配发计数执行原子自增操作,以将所述配发计数的数值更新为当前数值和所述请求处理数量的和值,其中,所述第一预设指令为所述目标数据库中用于对数值执行原子自增操作的指令;
在所述资源请求类型为资源退回类型的情况下,根据第二预设指令和所述请求处理数量,对所述配发计数执行原子自减操作,以将所述配发计数的数值更新为当前数值和所述请求处理数量的差值,其中,所述第二预设指令为所述目标数据库中用于对数值执行原子自减操作的指令。
3.根据权利要求2所述的方法,其特征在于,所述根据所述原子操作后的配发计数,对所述目标资源进行配发处理,包括:
在所述资源请求类型为资源获取类型的情况下,判断所述原子自增操作后的配发计数是否大于所述目标资源的库存数量的上限;
若所述原子自增操作后的配发计数小于或等于所述库存数量的上限,则生成与所述配发请求对应的数据配发记录;
将所述数据配发记录写入至业务数据库中,所述业务数据库用于存储所述目标资源的数据配发记录;
向发送所述配发请求的终端设备返回用于表示请求成功的第一响应消息;
其中,所述数据配发记录中包括目标用户的用户标识和配发标识,所述配发标识用于表示与所述请求处理数量对应的目标资源是否已配发至所述目标用户,所述配发标识的初始数值表示已配发,所述目标用户为基于所述终端设备发出所述配发请求的用户。
4.根据权利要求2所述的方法,其特征在于,所述根据所述原子操作后的配发计数,对所述目标资源进行配发处理,包括:
在所述资源请求类型为资源退回类型的情况下,获取目标用户的用户标识,其中,所述目标用户为基于终端设备发出所述配发请求的用户;
根据所述用户标识,从业务数据库中获取与所述目标用户对应的数据配发记录;
将所述数据配发记录中的配发标识的数值更新为表示已退回的数值,并向所述终端设备返回表示请求成功的第二响应消息。
5.根据权利要求1所述的方法,其特征在于,在所述根据所述资源标识,获取所述目标资源对应的配发计数步骤之前,所述方法还包括:
在所述资源请求类型为资源获取类型的情况下,获取所述目标数据库的分布式锁,并在成功获取到所述分布式锁的情况下,执行所述根据所述资源标识,获取所述目标资源对应的配发计数的步骤;以及,
在所述对所述目标资源进行配发处理之后,释放所述分布式锁。
6.根据权利要求1所述的方法,其特征在于,所述根据所述资源标识,获取所述目标资源对应的配发计数,包括:
根据所述资源标识,确定所述目标数据库中是否已缓存所述配发计数;
在确定所述目标数据库未缓存所述配发计数的情况下,生成所述资源标识对应的目标键值对,并将所述目标键值对存储于所述目标数据库中,其中,所述目标键值对中配发计数的初始值为预设数值。
7.根据权利要求6所述的方法,其特征在于,在所述根据所述资源标识,确定所述目标数据库中是否已缓存所述配发计数步骤之前,所述方法还包括:
根据所述资源标识,确定所述目标数据库中是否已缓存所述目标资源的资源信息,其中,所述资源信息包括有效性标识信息和配发用户类别信息;
在确定未缓存所述资源信息的情况下,从业务数据库中获取并缓存所述资源信息至所述目标数据库中,其中,所述业务数据库用于永久性的存储资源的资源信息;
在确定所述目标数据库已缓存所述资源信息的情况下,根据所述有效性标识信息和所述配发用户类别信息,对所述配发请求进行有效性校验,并在校验通过的情况下,执行所述根据所述资源标识,确定所述目标数据库中是否已缓存所述配发计数步骤;
其中,所述有效性校验包括根据所述有效性标识信息确定所述目标资源在当前时刻是否有效,以及根据所述配发用户类别信息判断目标用户是否为有效用户,所述目标用户为基于终端设备发出所述配发请求的用户。
8.一种资源处理装置,其特征在于,包括:
接收单元,用于接收针对目标资源的配发请求,其中,所述配发请求用于触发对目标资源进行配发处理,所述配发请求中包括目标资源的资源标识、请求处理数量和资源请求类型,所述目标资源为库存数量存在上限的虚拟资源;
获取单元,用于根据所述资源标识,获取所述目标资源对应的配发计数,其中,所述配发计数表示所述目标资源在当前时刻已被配发的数量,所述配发计数存储于目标数据库中,所述目标数据库为支持通过单线程对存储的数据进行原子操作的键值型数据库,所述原子操作用于对数据进行更新;
操作单元,用于根据所述请求处理数量和所述资源请求类型,对所述配发计数执行原子操作;以及,
配发单元,用于根据所述原子操作后的配发计数,对所述目标资源进行配发处理。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任一项所述的资源处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-7中任一项所述的资源处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211200421.XA CN116149837A (zh) | 2022-09-29 | 2022-09-29 | 资源处理方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211200421.XA CN116149837A (zh) | 2022-09-29 | 2022-09-29 | 资源处理方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116149837A true CN116149837A (zh) | 2023-05-23 |
Family
ID=86372481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211200421.XA Pending CN116149837A (zh) | 2022-09-29 | 2022-09-29 | 资源处理方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116149837A (zh) |
-
2022
- 2022-09-29 CN CN202211200421.XA patent/CN116149837A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934888B2 (en) | Systems and method for managing memory resources used by smart contracts of a blockchain | |
US10579973B2 (en) | System for efficient processing of transaction requests related to an account in a database | |
CN107608773B (zh) | 任务并发处理方法、装置及计算设备 | |
US20180096360A1 (en) | Method and apparatus to enforce smart contract execution hierarchy on blockchain | |
CN103544153B (zh) | 一种基于数据库的数据更新方法和系统 | |
EP3238421B1 (en) | System for high-throughput handling of transactions in data-partitioned, distributed, relational database management system | |
US9465880B2 (en) | Optimizing storage in a publish / subscribe environment | |
CN109447820B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN111694638A (zh) | 规则包加载方法、规则包执行方法及终端设备 | |
US11816163B2 (en) | Systems and methods for improved transactional mainframes | |
US20220067033A1 (en) | Method and apparatus for processing data for a blockchain | |
CN116071175A (zh) | 热点账户的管理方法以及热点账户的管理装置 | |
CN110321357B (zh) | 一种读写控制方法、装置及服务器 | |
CN105468623A (zh) | 数据处理方法及装置 | |
US20210334014A1 (en) | Method, electronic device and computer program product for managing storage unit | |
CN107463638A (zh) | 离线虚拟机间文件共享方法和设备 | |
CN116149837A (zh) | 资源处理方法及装置、电子设备、存储介质 | |
CN111260411B (zh) | 一种资源处理方法及装置 | |
CN113420050A (zh) | 数据查询管理方法、装置、计算机设备及可读存储介质 | |
CN113824806A (zh) | 设备识别方法、装置及电子设备 | |
CN117992115B (zh) | 系统配置处理方法、装置、设备、介质及程序产品 | |
CN110308996B (zh) | 一种用户url请求的匹配方法 | |
CN118316930A (zh) | 云平台资源的统计方法、装置、设备和介质 | |
JP2023532138A (ja) | イメージ配布方法、電子機器及び記憶媒体 | |
US20080033590A1 (en) | Method and system for managing lot transactions |
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 |